首页 / 数据库 / SQLServer / sql server 2008 R2中查找未使用过的索引
sql server 2008 R2中查找未使用过的索引2014-03-14 csdn博客 ocpyangSELECT TOP 1000o.name AS 表名, i.name AS 索引名, i.index_id AS 索引id, dm_ius.user_seeks AS 搜索次数, dm_ius.user_scans AS 扫描次数, dm_ius.user_lookups AS 查找次数, dm_ius.user_updates AS 更新次数, p.TableRows as 表行数, "DROP INDEX " + QUOTENAME(i.name)+ " ON " + QUOTENAME(s.name) + "." + QUOTENAME(OBJECT_NAME(dm_ius.OBJECT_ID)) AS "删除语句"FROM sys.dm_db_index_usage_stats dm_iusatchINNER JOIN sys.indexes i ON i.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = i.OBJECT_IDINNER JOIN sys.objects o ON dm_ius.OBJECT_ID = o.OBJECT_IDINNER JOIN sys.schemas s ON o.schema_id = s.schema_idINNER JOIN (SELECT SUM(p.rows) TableRows, p.index_id, p.OBJECT_IDFROM sys.partitions p GROUP BY p.index_id, p.OBJECT_ID) pON p.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = p.OBJECT_IDWHERE OBJECTPROPERTY (dm_ius.OBJECT_ID,"IsUserTable") = 1AND dm_ius.database_id = DB_ID()AND i.type_desc = "nonclustered"AND i.is_primary_key = 0AND i.is_unique_constraint = 0and o.name="tblorders" --根据实际修改表名ORDER BY (dm_ius.user_seeks + dm_ius.user_scans + dm_ius.user_lookups) ASC--结果 处理:user_updates很大,而发现user_seeks和user_scans很少或者就是0,那就说明该索引一 直在更新,但是从来不被使用,仅仅创建和修改,没有为查询提供任何帮助,就可以考虑删除了