sys.dm_db_missing_index_group_stats (Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
공간 인덱스를 제외한 누락된 인덱스 그룹에 대한 요약 정보를 반환합니다.
Azure SQL Database에서 동적 관리 뷰는 데이터베이스 봉쇄에 영향을 미치는 정보를 노출하거나 사용자가 액세스할 수 있는 다른 데이터베이스에 대한 정보를 노출할 수 없습니다. 이 정보를 노출하지 않으려면 연결된 테넌트에 속하지 않는 데이터가 포함된 모든 행이 필터링됩니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
group_handle | int | 누락된 인덱스 그룹을 식별합니다. 이 식별자는 서버 전체에서 고유합니다. 다른 열은 그룹의 인덱스가 누락된 것으로 간주되는 모든 쿼리에 대한 정보를 제공합니다. 인덱스 그룹에는 하나의 인덱스만 포함됩니다. sys.dm_db_missing_index_groups 조인할 index_group_handle 수 있습니다. |
unique_compiles | bigint | 이 누락된 인덱스 그룹에 적합한 컴파일 및 다시 컴파일 수입니다. 서로 다른 많은 쿼리의 컴파일 및 다시 컴파일이 이 열 값에 영향을 줄 수 있습니다. |
user_seeks | bigint | 그룹의 권장 인덱스를 사용할 수 있는 사용자 쿼리로 인한 검색 횟수입니다. |
user_scans | bigint | 그룹의 권장 인덱스를 사용할 수 있는 사용자 쿼리로 인한 검사 수입니다. |
last_user_seek | 날짜/시간 | 그룹의 권장 인덱스가 사용되었을 수 있는 사용자 쿼리에 의해 수행된 마지막 검색(Seek)의 날짜와 시간입니다. |
last_user_scan | 날짜/시간 | 그룹의 권장 인덱스를 사용할 수 있었던 사용자 쿼리로 인한 마지막 검사 날짜 및 시간입니다. |
avg_total_user_cost | float | 그룹의 인덱스로 줄일 수 있는 사용자 쿼리의 평균 비용입니다. |
avg_user_impact | float | 누락된 인덱스 그룹을 구현할 경우 사용자 쿼리에서 얻을 수 있는 적합한 평균 백분율입니다. 즉, 이 누락된 인덱스 그룹을 구현할 경우 쿼리 비용이 평균적으로 이 백분율만큼 감소합니다. |
system_seeks | bigint | 그룹의 권장 인덱스를 사용할 수 있는 자동 통계 쿼리와 같은 시스템 쿼리로 인한 검색 횟수입니다. 자세한 내용은 Auto Stats 이벤트 클래스를 참조 하세요. |
system_scans | bigint | 그룹의 권장 인덱스를 사용할 수 있는 시스템 쿼리로 인한 검사 수입니다. |
last_system_seek | 날짜/시간 | 그룹의 권장 인덱스를 사용할 수 있었던 시스템 쿼리로 인한 마지막 시스템 검색 날짜 및 시간입니다. |
last_system_scan | 날짜/시간 | 그룹의 권장 인덱스를 사용할 수 있었던 시스템 쿼리로 인한 마지막 시스템 검사 날짜 및 시간입니다. |
avg_total_system_cost | float | 그룹의 인덱스로 줄일 수 있는 시스템 쿼리의 평균 비용입니다. |
avg_system_impact | float | 누락된 인덱스 그룹이 구현된 경우 시스템 쿼리에서 경험할 수 있는 평균 백분율 이점입니다. 즉, 이 누락된 인덱스 그룹을 구현할 경우 쿼리 비용이 평균적으로 이 백분율만큼 감소합니다. |
설명
반환된 sys.dm_db_missing_index_group_stats
정보는 모든 쿼리 컴파일 또는 다시 컴파일이 아니라 모든 쿼리 실행에 의해 업데이트됩니다. 사용 통계는 유지되지 않으며 데이터베이스 엔진이 다시 시작될 때까지만 유지됩니다. 데이터베이스 관리자는 서버 재활용 후 사용 통계를 유지하려는 경우 누락된 인덱스 정보의 백업 복사본을 주기적으로 만들어야 합니다. sqlserver_start_time
sys.dm_os_sys_info 열을 사용하여 마지막 데이터베이스 엔진 시작 시간을 찾습니다.
참고 항목
이 DMV에 대한 결과 집합은 600개 행으로 제한됩니다. 각 행에는 누락된 인덱스가 하나 있습니다. 누락된 인덱스가 600개 이상인 경우 누락된 기존 인덱스를 처리해야 최신 인덱스를 볼 수 있습니다.
누락된 인덱스 그룹 중 하나에 동일한 인덱스가 필요한 여러 쿼리가 있을 수 있습니다. 이 DMV에서 특정 인덱스가 필요한 개별 쿼리에 대한 자세한 내용은 sys.dm_db_missing_index_group_stats_query 참조하세요.
사용 권한
이 동적 관리 뷰를 쿼리하려면 사용자에게 VIEW SERVER STATE 사용 권한 또는 VIEW SERVER STATE 권한을 의미하는 모든 권한이 부여되어야 합니다.
SQL Server 2022 이상에 대한 사용 권한
서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.
예제
다음 예제에서는 동적 관리 뷰를 sys.dm_db_missing_index_group_stats
사용하는 방법을 보여 줍니다. 누락된 인덱스 제안과 함께 비클러스터형 인덱스를 조정하는 데 누락된 인덱스를 사용하는 방법에 대한 지침에 대해 자세히 알아봅니다.
A. 사용자 쿼리에 대해 예상되는 개선 사항이 가장 높은 누락된 인덱스 10개 찾기
다음 쿼리에서는 사용자 쿼리의 누적 성능이 가장 많이 향상될 것으로 예상되는 누락된 인덱스 10개를 내림차순으로 확인합니다.
SELECT TOP 10 *
FROM sys.dm_db_missing_index_group_stats
ORDER BY avg_total_user_cost * avg_user_impact * (user_seeks + user_scans)DESC;
B. 특정 누락된 인덱스 그룹의 개별 누락된 인덱스 및 해당 열 정보 찾기
다음 쿼리는 누락된 특정 인덱스 그룹을 구성하는 누락된 인덱스를 결정하고 열 세부 정보를 표시합니다. 이 예제에서는 누락된 인덱 group_handle
스가 24입니다.
SELECT migs.group_handle, mid.*
FROM sys.dm_db_missing_index_group_stats AS migs
INNER JOIN sys.dm_db_missing_index_groups AS mig
ON (migs.group_handle = mig.index_group_handle)
INNER JOIN sys.dm_db_missing_index_details AS mid
ON (mig.index_handle = mid.index_handle)
WHERE migs.group_handle = 24;
이 쿼리는 인덱스가 누락된 데이터베이스, 스키마 및 테이블의 이름을 제공합니다. 또한 인덱스 키로 사용해야 하는 열의 이름을 제공합니다. 누락된 인덱스를 구현하기 위해 CREATE INDEX DDL 문을 작성할 때는 먼저 같음 열을 나열한 다음 CREATE INDEX 문의 ON <table_name> 절에 같지 않음 열을 나열합니다. 포함된 열은 CREATE INDEX 문의 INCLUDE 절에 나열되어야 합니다. 같음 열에 대한 유효 순서를 확인하려면 선택성에 따라 순서를 지정하고 가장 선택적인 열을 먼저 나열합니다(열 목록에서 맨 왼쪽). 누락된 인덱스 제안을 적용하는 방법을 알아봅니다.
다음 단계
다음 문서에서 누락된 인덱스 기능에 대해 자세히 알아봅니다.