我有一些旧表,我认为它几乎是无价值的索引。我如何轻松确定在我放弃它之前没有被使用过。如何判断一个索引是否曾被使用过
10
A
回答
4
看看sys.dm_db_index_usage_stats DMV。请注意,每次SQL Server重新启动时都会重置这些计数器。
7
基于Joe的答案,我想出了这一点:
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
0
退房的this articlethis section由Ian Stirk在2007年非常漂亮的工具集,包括找到你的未使用的索引。
0
检查用户查询索引是否随着表中的每个选择而增加,除非服务器重新启动,这会让您清楚地了解正在使用或不使用索引。
SELECT DISTINCT OBJECT_NAME(sis.OBJECT_ID) TableName, si.name AS IndexName, sc.Name AS ColumnName,
sic.Index_ID, sis.user_seeks, sis.user_scans, sis.user_lookups, sis.user_updates
FROM sys.dm_db_index_usage_stats sis
INNER JOIN sys.indexes si ON sis.OBJECT_ID = si.OBJECT_ID AND sis.Index_ID = si.Index_ID
INNER JOIN sys.index_columns sic ON sis.OBJECT_ID = sic.OBJECT_ID AND sic.Index_ID = si.Index_ID
INNER JOIN sys.columns sc ON sis.OBJECT_ID = sc.OBJECT_ID AND sic.Column_ID = sc.Column_ID
WHERE sis.Database_ID = DB_ID('database_name') AND sis.OBJECT_ID = OBJECT_ID('table_name');
GO
相关问题
- 1. 如何判断是否放置了一个IDisposable对象引用?
- 2. 如何判断一个复选框是否实际被点击?
- 3. 如何判断一个对象是否被垃圾收集
- 4. 如何判断一个页面是否被提供给iframe?
- 5. 如何判断soundmanager2是否使用html5?
- 6. 如何判断是否使用glibc
- 7. SAS Proc SQL在合并时是否曾经使用过索引
- 8. 如何通过HANDLE来判断一个堆是否被序列化?
- 9. 如何判断会话cookie是否被使用?
- 10. 如何判断一个窗口是否使用GJS最小化?
- 11. 如何判断一个过程是否已经结束?
- 12. 如何判断一个函数是否是一个类?
- 13. 如何判断一行是否被锁定?
- 14. 如何判断最后一系列事件是否被遏制?
- 15. 如何判断某个键是否在Python中被按下?
- 16. 如何判断一个git回购是否是一面镜子?
- 17. 如何判断一个函数是否被用来修改信息?
- 18. 如何判断一个实体是否在Dynamics CRM 4.0中被禁用?
- 19. 如何判断一个类是否来自另一个类
- 20. JasperReports:如何判断一个字段是否被推送到下一页
- 21. 如何判断AUCTeX是否可用?
- 22. 如何判断Rust库是否被弃用?
- 23. 如何判断CoInitializeSecurity是否已被调用进程?
- 24. 如何判断DLL函数是否从VB6 exe被调用?
- 25. 如何判断net/http的ResponseWriter.Write()是否已被调用?
- 26. 如何判断一个div标签/元素是否超过另一个?
- 27. 如何判断一个Type是否是静态类?
- 28. 如何判断Request.Form中的值是否是一个数字? (C#)
- 29. 如何判断一个URL是否是Intranet网址?
- 30. 如何判断一个字符串是否是网址?
还要记住,索引可能很少使用,但是当他们运行每年的废话时,您可能会有会计部门在线。 – Sam 2011-02-28 17:44:36