SELECT
sch.name+'.'+t.nameAS[TableName],
i.nameAS[IndexName],
i.type_desc,
ISNULL(user_updates,0)AS[TotalWrites],
ISNULL(user_seeks+user_scans+user_lookups,0)AS[TotalReads],
s.last_user_seek,
s.last_user_scan,
s.last_user_lookup,
ISNULL(user_updates,0)-ISNULL((user_seeks+user_scans+user_lookups),0)AS[Difference],
p.reserved_page_count*8.0/1024asSpaceInMB
FROMsys.indexesASiWITH(NOLOCK)
LEFTOUTERJOINsys.dm_db_index_usage_statsASsWITH(NOLOCK)ONs.object_id=i.object_idANDi.index_id=s.index_idANDs.database_id=db_id()ANDobjectproperty(s.object_id,'IsUserTable')=1
INNERJOINsys.tablesAStWITH(NOLOCK)ONi.object_id=t.object_id
INNERJOINsys.schemasASschWITH(NOLOCK)ONt.schema_id=sch.schema_id
LEFTOUTERJOINsys.dm_db_partition_statsASpWITH(NOLOCK)ONi.index_id=p.index_idandi.object_id=p.object_id
WHERE(1=1)
--ANDISNULL(user_updates,0)>=ISNULL((user_seeks+user_scans+user_lookups),0)--showsallindexesincludingthosethathavenotbeenused
--ANDISNULL(user_updates,0)-ISNULL((user_seeks+user_scans+user_lookups),0)>0--onlyshowsthoseindexeswhichhavebeenused
--ANDi.index_id>1--Onlynon-firstindexes(I.E.non-primarykey)
--ANDi.is_primary_key<>1--OnlythosethatarenotdefinedasaPrimaryKey)
--ANDi.is_unique_constraint<>1--Onlythosethatarenotclassedas"UniqueConstraints".
ORDERBY[TableName],[indexname]