본문 바로가기
SQL

[MSSQL] 누락된 인덱스 찾기

by Jundol 2020. 9. 21.
SELECT user_seeks * avg_total_user_cost * (avg_user_impact * 0.01) AS [index_advantage],
migs.last_user_seek, mid.[statement] AS [Database.Schema.Table],
mid.equality_columns, mid.inequality_columns, mid.included_columns,
migs.unique_compiles, migs.user_seeks, migs.avg_total_user_cost,
migs.avg_user_impact
FROM sys.dm_db_missing_index_group_stats AS migs WITH (NOLOCK)
INNER JOIN sys.dm_db_missing_index_groups AS mig WITH (NOLOCK) ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS mid WITH (NOLOCK) ON mig.index_handle = mid.index_handle
WHERE mid.database_id = DB_ID() -- Remove this to see for entire instance
ORDER BY index_advantage DESC OPTION (RECOMPILE)
  • Index Advantage - 인덱스 검색 수와 테이블에 이 인덱스 검색을 수행했을 때의 평균 비용을 고려한 식
  • Last User Seek - 검색이 발생한 마지막 시각
  • Database.Schema.Table - 인덱스를 만들었을 때 성능에 도움이 되는 테이블
  • Equality columns - 같음(=) 조건과 같이 값이 데이터가 정확히 일치하지 않는 조건을 가진 열 목록
  • Inequality columns - 같지 않음 (<>) 조건과 같이 데이터가 정확히 일치하지 않는 조건을 가진 열 목록
  • Include columns - 커버링 인덱스로 만들기 위해 인덱스에 포함시켜야 하는 열 목록
  • Unique Compiles - 인덱스로 인해 이점을 얻을 수 있는 SQL 구문의 컴파일과 재컴파일 수 
  • User Seeks - 인덱스로 이점을 얻을 수 있는 검색 수
  • Average Total User Cost - 인덱스로 줄일 수 있는 사용자 쿼리의 평균 비용
  • Average User Impact - 인덱스를 추가함으로써 향상될 수 있는 성능 향상 백분율


1. 실전 SQLServerMVP61 - Part01. 03 - 구조적 성장의 고통


댓글