如何判断是否使用过索引

Rac*_*erX 15 sql-server sql-server-2005

我有一些旧表,我认为,几乎是毫无价值的索引.我怎样才能轻易确定在丢弃它之前从未使用过.

Rac*_*erX 15

根据乔的回答,我想出了这个:

SELECT
      row_number() over(order by user_seeks,user_lookups,user_scans),
      [Database] = d.name,
      [Schema]= s.name,
      [Table]= o.name,
      [Index]= x.name,
      [Scans] = user_scans,
      [Seeks] = user_seeks,
      [Lookups] = user_lookups,
      [Last Scan] = last_user_scan,
      [System Scans] = system_scans
FROM  sys.dm_db_index_usage_stats u
INNER JOIN sys.sysdatabases d on u.database_id = d.dbid
INNER JOIN sys.sysindexes x on u.object_id = x.id  and u.index_id = x.indid
INNER JOIN sys.objects o on u.object_id = o.object_id
INNER JOIN sys.schemas s on s.schema_id = o.schema_id
where  x.name is not null
order by 1 desc
Run Code Online (Sandbox Code Playgroud)


Joe*_*lli 5

看一下sys.dm_db_index_usage_stats DMV.请注意,每次重新启动SQL Server时都会重置这些计数器.

  • 还要记住,索引可能很少使用,但是当他们运行年度废话时,您可能会有会计部门. (8认同)