--查看用户查询使用索引情况
SELECT
DB_NAME() AS DatabaseName
,SCHEMA_NAME(o.Schema_ID) AS SchemaName
,OBJECT_NAME(s.[object_id]) AS TableName
,i.name AS IndexName
,s.user_updates
,s.user_scans
,s.user_seeks
,s.user_lookups
,s.system_seeks + s.system_scans + s.system_lookups AS SystemUsage
FROM sys.dm_db_index_usage_stats s
INNER JOIN sys.indexes i
ON s.[object_id] = i.[object_id]
AND s.index_id = i.index_id
INNER JOIN sys.objects o
ON i.object_id = O.object_id
ORDER BY S.user_updates DESC
--查看索引碎片情况
SELECT
DB_NAME() AS DatbaseName
,SCHEMA_NAME(o.Schema_ID) AS SchemaName
,OBJECT_NAME(s.[object_id]) AS TableName
,i.name AS IndexName
,s.avg_fragmentation_in_percent
,s.index_depth
FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s
INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]
AND s.index_id = i.index_id
INNER JOIN sys.objects o ON i.object_id = O.object_id
WHERE i.name IS NOT NULL
AND OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0
ORDER BY s.avg_page_space_used_in_percent DESC
--查看索引统计的相关信息
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT
ss.name AS SchemaName
,st.name AS TableName
,s.name AS IndexName
,STATS_DATE(s.id,s.indid) AS 'Statistics Last Updated'
,s.rowcnt AS 'Row Count'
,s.rowmodctr AS 'Number Of Changes'
,CAST((CAST(s.rowmodctr AS DECIMAL(28,8))/CAST(s.rowcnt AS DECIMAL(28,2)) * 100.0) AS DECIMAL(28,2)) AS '% Rows Changed'
FROM sys.sysindexes s
INNER JOIN sys.tables st ON st.[object_id] = s.[id]
INNER JOIN sys.schemas ss ON ss.[schema_id] = st.[schema_id]
WHERE s.id > 100
AND s.indid > 0
AND s.rowcnt >= 500
ORDER BY SchemaName, TableName, IndexName