SQL 2015. 4. 15. 17:52

인덱스 사용 현황 분석

USE 데이터베이스명


DECLARE @dbname NVARCHAR(128) = '데이터베이스명'


SELECT 

object_name(T.object_id) AS Table_Name

, I.name AS Index_Name

, I.type_desc

, T.user_seeks

, T.user_scans

, T.user_lookups

, T.user_updates

, T.last_user_seek

, T.last_user_scan

, T.last_user_lookup

, T.last_user_update

FROM  (

SELECT * 

FROM sys.dm_db_index_usage_stats

WHERE database_id = db_id(@dbname)

) AS T

INNER JOIN sys.indexes AS I

ON T.object_id = I.object_id AND T.index_id = I.index_id

ORDER BY T.user_scans DESC


GO


해당 쿼리는 데이터베이스에서 스캔이 많이 발생한 순서대로 결과를 보는 쿼리이다. 분석에 필요한 정보는 SELECT 항목을 수정하기 바란다.


동적관리뷰의 상세 사항은 MSDN을 참고하기 바란다. 


위의 쿼리를 이용하면 스캔일 발생하고 있는 테이블과 인덱스뿐만이 아니라 사용하지 않는 인덱스까지 한눈에 알아볼 수 있다.