실행계획이란?
- 옵티마이저가 쿼리의 최적 실행 방법을 결정하여 나타내는 쿼리의 동작 계획
- 작성된 쿼리문의 성능을 파악할 수 있는 DBMS가 지원해주는 정보
- 작성된 쿼리가 어떤 식으로 동작하는지 내용을 파악할 수 있다
실행계획의 중요성
- 자신이 작성한 쿼리의 실행계획을 제대로 파악하지 못한채 쿼리를 작성하게 되면 데이터가 많아졌을 때 성능 저하가 발생!
MS-SQL에서 실행계획 보는 방법
- 실행계획을 확인할 쿼리를 드래그 한 후 Ctrl+L 을 누르면 선택된 영역 쿼리의 실행계획을 볼 수 있다
실행계획에 나오는 용어 정리
Table Scan - 테이블 내 전체 데이터를 모두 검색(full scan)
Table Seek - 인덱스를 사용하여 검색
Index Scan - 인덱스를 검색하여 데이터를 검색(range scan)
Index Seek - 인덱스를 사용하여 검색
Hash join - 두 테이블간에 인덱스가 없고 Equal Join을 사용할 경우
NS Lookup -
빨간색으로 표시된 부분이 실행계획에 많이 있으면 데이터가 많아짐에 따라 성능 저하의 위험이 있다는 뜻!
실행계획을 볼 때 유의 할 점!
- 실행 계획에 Table Scan / Index Scan 이 있으면 전체 검색을 하기 때문에 Table Seek / Index Seek으로 바꿔주는게 일반적으로 좋다
- Scan을 Seek로 바꿀려면 Where에 사용하는 컬럼에 Index를 걸어주면 해결된다.(* 단 Index에 대한 이해가 필수!)
- 데이터 검색할 Row수가 적으면 쿼리 옵티마이져가 자동적으로 Scan으로 검색하니 참고!
*앞으로 실행계획을 통해 자신이 만든 쿼리와 SP의 성능을 확인하고 개선하는 습관을 가지는 것이 좋다!!!!*
*SQL Server 2014 기준으로 작성한 글입니다.
'Database > SQL Server' 카테고리의 다른 글
트랜잭션 격리수준과 with(nolock) 힌트 (0) | 2019.04.29 |
---|---|
B-TREE 구조 (0) | 2018.11.15 |
[MSSQL] Table Column 속성 변경 (0) | 2018.06.25 |
Database 내 모든 테이블 정보 확인 (0) | 2018.06.14 |
동적 쿼리와 정적 쿼리 (0) | 2018.05.23 |