반응형

실행계획이란?

- 옵티마이저가 쿼리의 최적 실행 방법을 결정하여 나타내는 쿼리의 동작 계획

- 작성된 쿼리문의 성능을 파악할 수 있는 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

+ Recent posts