Donnerstag, 1. April 2010

Identify unused indexes

Technorati-Tags:

For a regular review it is useful to identify unused indexes. With the following query you can show unused indexes in your database. So don’t forget to select your database.

If the columns “reads” = 0 or very low, then you can assume that this index isn’t used for querying.

SELECT
  objectname=OBJECT_NAME(s.OBJECT_ID)
, indexname=i.name
, i.index_id
, reads=user_seeks + user_scans + user_lookups
, writes = user_updates
, p.rows
FROM sys.dm_db_index_usage_stats s
JOIN sys.indexes i ON
    i.index_id = s.index_id AND
    s.OBJECT_ID = i.OBJECT_ID
JOIN sys.partitions p ON
    p.index_id = s.index_id AND
    s.OBJECT_ID = p.OBJECT_ID
WHERE
    OBJECTPROPERTY(s.OBJECT_ID,'IsUserTable') = 1
AND s.database_id = DB_ID()
AND i.type_desc = 'nonclustered'
AND i.is_primary_key = 0
AND i.is_unique_constraint = 0
AND p.rows > 10000
ORDER BY reads, rows DESC

Keine Kommentare:

Kommentar veröffentlichen