-- 누락된 인덱스 확인 쿼리
SELECT TOP 30
[Index Advantage] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0)
, avg_user_impact
, TableName = statement
, [EqualityUsage] = equality_columns
, [InequalityUsage] = inequality_columns
, [Include Cloumns] = included_columns
, [Unique Compiles] = unique_compiles
, user_seeks
FROM sys.dm_db_missing_index_groups g WITH (NOLOCK)
INNER JOIN sys.dm_db_missing_index_group_stats s WITH (NOLOCK)
ON s.group_handle = g.index_group_handle
INNER JOIN sys.dm_db_missing_index_details d WITH (NOLOCK)
ON d.index_handle = g.index_handle
ORDER BY [Index Advantage] DESC;
equality_columns : WHERE절에 같음(=) 조건으로 사용되는 컬럼
inequality_columns : WHERE절에 같지 않은(<,>) 조건으로 사용되는 컬럼
included_columns : SELECT 절에 나오는 컬럼
쿼리의 컬럼 설명
sys.dm_db_missing_index_group_stats
열 이름데이터 형식설명
group_handle |
int |
누락된 인덱스 그룹을 식별합니다. 이 식별자는 서버에서 고유합니다. 다른 열은 그룹의 인덱스가 누락된 것으로 간주되는 모든 쿼리에 대한 정보를 제공합니다. 인덱스 그룹에는 인덱스가 하나만 포함되어 있습니다. |
unique_compiles |
bigint |
이 누락된 인덱스 그룹에 적합한 컴파일 및 다시 컴파일 수입니다. 서로 다른 많은 쿼리의 컴파일 및 다시 컴파일이 이 열 값에 영향을 줄 수 있습니다. |
user_seeks |
bigint |
그룹의 권장 인덱스가 사용되었을 수 있는 사용자 쿼리에 의해 수행된 검색(Seek) 수입니다. |
user_scans |
bigint |
그룹의 권장 인덱스가 사용되었을 수 있는 사용자 쿼리에 의해 수행된 검색(Scan) 수입니다. |
last_user_seek |
datetime |
그룹의 권장 인덱스가 사용되었을 수 있는 사용자 쿼리에 의해 수행된 마지막 검색(Seek)의 날짜와 시간입니다. |
last_user_scan |
datetime |
그룹의 권장 인덱스가 사용되었을 수 있는 사용자 쿼리에 의해 수행된 마지막 검색(Scan)의 날짜와 시간입니다. |
avg_total_user_cost |
float |
그룹의 인덱스로 줄일 수 있는 사용자 쿼리의 평균 비용입니다. |
avg_user_impact |
float |
누락된 인덱스 그룹을 구현할 경우 사용자 쿼리에서 얻을 수 있는 적합한 평균 백분율입니다. 즉, 이 누락된 인덱스 그룹을 구현할 경우 쿼리 비용이 평균적으로 이 백분율만큼 감소합니다. |
system_seeks |
bigint |
그룹의 권장 인덱스가 사용되었을 수 있는 auto stats 쿼리와 같은 시스템 쿼리에 의해 수행된 검색(Seek) 수입니다. 자세한 내용은 Auto Stats 이벤트 클래스를 참조하십시오. |
system_scans |
bigint |
그룹의 권장 인덱스가 사용되었을 수 있는 시스템 쿼리에 의해 수행된 검색(Scan) 수입니다. |
last_system_seek |
datetime |
그룹의 권장 인덱스가 사용되었을 수 있는 시스템 쿼리에 의해 수행된 마지막 시스템 검색(Seek)의 날짜와 시간입니다. |
last_system_scan |
datetime |
그룹의 권장 인덱스가 사용되었을 수 있는 시스템 쿼리에 의해 수행된 마지막 시스템 검색(Scan)의 날짜와 시간입니다. |
avg_total_system_cost |
float |
그룹의 인덱스로 줄일 수 있는 시스템 쿼리의 평균 비용입니다. |
avg_system_impact |
float |
누락된 인덱스 그룹을 구현할 경우 시스템 쿼리에서 얻을 수 있는 적합한 평균 백분율입니다. 즉, 이 누락된 인덱스 그룹을 구현할 경우 쿼리 비용이 평균적으로 이 백분율만큼 감소합니다. |
sys.dm_db_missing_index_details
열 이름데이터 형식설명
index_handle |
int |
특정 누락된 인덱스를 식별합니다. 이 식별자는 서버에서 고유합니다. index_handle은 이 테이블의 키입니다. |
database_id |
smallint |
누락된 인덱스가 있는 테이블이 위치한 데이터베이스를 식별합니다. |
object_id |
int |
인덱스가 없는 테이블을 식별합니다. |
equality_columns |
nvarchar(4000) |
다음 형식의 같음 조건자에 적용되는 쉼표로 구분된 열 목록입니다. table.column =constant_value |
inequality_columns |
nvarchar(4000) |
다음 형식의 같지 않음 조건자에 적용되는 쉼표로 구분된 열 목록입니다. table.column > constant_value "="가 아닌 모든 비교 연산자는 같지 않음을 표시합니다. 전체 비교 연산자 목록은 비교 연산자(데이터베이스 엔진)를 참조하십시오. |
included_columns |
nvarchar(4000) |
쿼리에 대한 포함 열로서 필요한 쉼표로 구분된 열 목록입니다. 포함 열 또는 포괄 열에 대한 자세한 내용은 포괄 열을 사용하여 인덱스 만들기를 참조하십시오. |
statement |
nvarchar(4000) |
인덱스가 없는 테이블의 이름입니다. |
'Database > Query' 카테고리의 다른 글
INDEX 정보 (0) | 2020.08.28 |
---|---|
동적 쿼리2 (0) | 2020.08.27 |
동적쿼리 (0) | 2020.08.27 |
SQL Server 요일 (0) | 2020.08.27 |
INDEX 인덱스 모니터링 (0) | 2020.08.27 |