The following DMV query retrieves
the usage statistics for existing indexes.
- User Seeks – A high number indicates a well utilized
index.
- User Scans – Number of times the index has been
scanned. Could indicate improper ordering of the composite columns
- User Lookups – Indicates a different index was used for
criteria and the actual data was looked up from this index for the select
list
- User Updates – Number of times the index was updated
with additional records
SELECT
ObjectName = object_schema_name(idx.object_id) + '.' + object_name(idx.object_id)
,IndexName = idx.name
,IndexType = CASE
WHEN is_unique = 1 THEN 'UNIQUE '
ELSE '' END + idx.type_desc
,User_Seeks = us.user_seeks
,User_Scans = us.user_scans
,User_Lookups = us.user_lookups
,User_Updates = us.user_updates
FROM sys.indexes idx
LEFT JOIN sys.dm_db_index_usage_stats us
ON idx.object_id = us.object_id
AND idx.index_id = us.index_id
AND us.database_id = db_id()
WHERE object_schema_name(idx.object_id) != 'sys'
ORDER BY us.user_seeks + us.user_scans + us.user_lookups DESC
ObjectName = object_schema_name(idx.object_id) + '.' + object_name(idx.object_id)
,IndexName = idx.name
,IndexType = CASE
WHEN is_unique = 1 THEN 'UNIQUE '
ELSE '' END + idx.type_desc
,User_Seeks = us.user_seeks
,User_Scans = us.user_scans
,User_Lookups = us.user_lookups
,User_Updates = us.user_updates
FROM sys.indexes idx
LEFT JOIN sys.dm_db_index_usage_stats us
ON idx.object_id = us.object_id
AND idx.index_id = us.index_id
AND us.database_id = db_id()
WHERE object_schema_name(idx.object_id) != 'sys'
ORDER BY us.user_seeks + us.user_scans + us.user_lookups DESC
No comments:
Post a Comment