성능 측면에서 잘못 작성된 쿼리는 DB 성능과 서비스 성능 저하를 유발하는 주요 원인이 됩니다. 개발 초기에 결과 위주로 작성된 쿼리나 SQL Server에 적합하지 않은 구현이 차후 데이터 증가와 함께 성능 문제를 유발하는 것이 일반적이죠.
그래서, 품질 좋은 쿼리 작성이 중요합니다!
성능 좋은 쿼리를 작성하기 위한 기본 규칙들과 금기 사항들
품질 좋은 쿼리 작성을 위한 기본 지식들
공통적인 실무 사례들의 간접적인 경험
SW 개발자로서 프로젝트나 솔루션 등의 개발 시에 어떤 유형의 쿼리나 구현이 차후 성능 문제를 유발할 수 있는지를 이해하고 실무에 바로 적용할 수 있도록 관련 지식과 경험을 공유하고 싶습니다.
이런 분들께 추천합니다.
SQL Server 초중급 개발자
SQL 쿼리 사용자
IT 프로젝트에 주로 참여하는 개발자
쿼리 성능에 관심 있는 초~ 중급 사용자
쿼리 최적화를 고민하는 솔루션 개발자
쿼리 작성 표준이 필요한 관리자
쿼리 작성법, 꼭 알아야 하는 세 가지 이유!
1️⃣ 실무에서 쿼리 구현 및 작성 시에 성능을 고려해 더 좋은 쿼리를 사용할 수 있습니다.
2️⃣ 성능 이슈가 예상되는 쿼리에 대해 DB 담당자나 현업과 협의할 수 있습니다.
3️⃣ 쿼리 튜닝을 학습하는데 도움이 됩니다.
더 좋은 품질, 더 나은 유지 보수를 위해.
인덱스와 쿼리 튜닝을 위해서 개발 및 구현 단계에서부터 기본적으로 해주어야 할 규칙, 금기사항 및 작성법이 있습니다.
본 교육에서는 개발자가 쿼리 구현 단계에서 고려해야 할 여러 가지 규칙들과 권장 사항들을 배울 수 있으며 이로 인해 더 좋은 품질과 유지 보수에 용이한 쿼리를 구현하는 데 도움을 얻을 수 있습니다. 특히 SQL Server를 전문적으로 오랫동안 컨설팅 및 강의 경험을 가진 지식공유자가 각 주제별로 실무에서 공통적으로 나타나는 예제들을 샘플로 사용하므로 교육 후 실무 활용에 직접적인 도움이 됩니다.
SQL Server 사용 초보인데 수강을 해도 될까요?
SQL 기초는 알고 있어야 내용을 이해하고 따라하는데 수월하실 겁니다, 혹시 중간에 잘 모르는 내용이 있다면 해당 구문/명령/문법에 대해서 학습을 하시고 다시 들으시면 이해에 도움이 되실 겁니다. 혹은 Q/A를 이용하셔도 되겠죠 😊
MySQL, PostgreSQL 등 다른 DBMS로 개발할 때도 적용될 수 있을까요?
DBMS마다 인덱스, 통계정보, 잠금, 쿼리 최적화 등의 아키텍처에 세밀한 차이가 있어 SQL Server를 기준으로 한 본 강의 내용이 100% 동일하게 적용되지는 않습니다. 그러나 상당히 많은 내용들이 다른 DBMS에서도 적용된다고 말씀드릴 수 있습니다.
SQL Server 버전에 따라서도 차이가 있을까요?
거의 대부분의 내용들은 현재 주로 사용하는 버전들을 기준으로 거의 차이가 없습니다. 일부 차이가 있는 부분은 강의에서 설명드립니다.
다음 내용을 학습합니다.
1. 쿼리 작성 기본 사항
운영 DB에서 SSMS나 개발 도구 쓸 때 조심하세요~
WHERE절과 JOIN절의 작성 순서는 성능에 영향을 미칠까요?
날짜시간 리터럴이나 문자열 리터럴 및 검색은 어떻게 하는 것이 좋을까요?
조인 조건과 검색 조건은 어떻게 구분해서 적용할까요?
내가 지금까지 사용한 쿼리가 혹시 “의미 오류”에 해당될까?
2. 쿼리 금기 사항
성능 상 좋은 조건식은 어떤 형식으로 작성해야 할까요?
쿼리 금기사항이 있다? 혹시 나도 습관적으로?
로컬 변수, 사용자 정의 함수 WHERE 절에 쓰면 위험하다고?
3. 더 좋은 쿼리 작성하기
IN과 BETWEEN 누가 빠른가요? 언제 누구를 쓰는게 좋을까?
집계함수의 주인공은 NULL
UNION(합집합), ALL 쓸까요? 뺄까요?
UPDATE하고 또 SELECT? 그냥 한 방에
SQL Server의 새로운 함수와 구문들 짱 좋아요^^
조인 구문은 어떻게 작성할까요? 불필요한 OUTER JOIN이 성능 문제를?
Subquery는 무조건 느리다구요? 잘 쓰면 약이에요
쿼리 튜닝 핵심 기능, 파생테이블/CTE/APPLY 맛보기
CASE 안에 SELECT 문? 아니 거꾸로 쓰세요
차집합 쿼리 필요하세요? NOT IN은 특히 주의하세요
재귀호출 쿼리, CTE 잘 활용하세요
쿼리 힌트 쓴다구요? 조심하세요~
SQL Server에서 쿼리는 잠금 이슈를 꼭 챙기세요~
4. 커서, 뷰, 사용자 정의 함수 구현 시 고려사항
Cursor? 가능한 SQL로 구현하세요, 그래도 필요하다면…
STRING_AGG() 함수 모르셨다구요? 깜짝 놀라실걸요
가제트 만능 팔! 아니 만능 View? 조심하세요~
사용자 정의 함수와 대량 검색이 만나면 많~이 무거워져요
FORMAT() 함수? 대량 검색에서 조심 조심
(부록) .NET EF, EF Core와 같은 ORM 쓰시나요? 조언드립니다
안녕하세요! 지식공유자 김정선입니다.
이력 사항
㈜씨퀄로(www.sqlroad.com ) 대표컨설턴트/이사 (2005년부터)
SQL Server 컨설팅, 기술지원, 강의, 솔루션 개발
SQLBigEyes (SQL Server 성능 모니터링 솔루션, www.sqlbigeyes.com ) 개발
SQLBigEyes (SQL Server 성능 모니터링 솔루션, www.sqlbigeyes.com ) 개발
Tôi đã tham gia khóa học viết các truy vấn hay trong mysql, nhưng một số bài giảng video không hữu ích lắm vì chúng được sản xuất dựa trên máy chủ sql và thật đáng thất vọng khi một số nội dung quan trọng bị thay thế bằng các bài giảng điều chỉnh truy vấn. Nhưng điều đó thật tốt vì nó đã dạy tôi những điều tôi chưa biết.
Tôi sẽ không giới thiệu nó cho những người làm việc với mysql, nhưng
Tôi nghĩ đây là một bài giảng hay cho những ai làm việc với máy chủ sql.
Chào kết quả
Cảm ơn bạn đã đăng trải nghiệm thực tế của mình, điều này tốt hơn lời giải thích của tôi! Những người có tình trạng tương tự sẽ giúp bạn đánh giá quá trình. Tôi rất vui vì nó đã giúp ích, ít nhất là một phần. Cảm ơn bạn~
Giấc mơ của Kim Jeong Seon