Rac*_*SQL 3 index sql-server-2008 sql-server
我是这家公司的新 DBA。我看到他们的一些表有很多索引;例如,有些超过 50 或 60。
这是一件好事吗?从我的研究来看,这似乎对性能不利。
你会如何处理这个?
我想删除所有索引并从 0 开始。我认为开发人员一直在使用 Tuning Advisor 并没有真正了解索引。
可能使用了其中一些索引,因此将它们全部删除并不是一个好主意。
您可以使用此查询(取自Glenn Berry 的诊断查询)查看索引使用统计数据并查找错误的 NC 索引:
-- Possible Bad NC Indexes (writes > reads) (Query 47) (Bad NC Indexes)
SELECT OBJECT_NAME(s.[object_id]) AS [Table Name], i.name AS [Index Name], i.index_id,
i.is_disabled, i.is_hypothetical, i.has_filter, i.fill_factor,
user_updates AS [Total Writes], user_seeks + user_scans + user_lookups AS [Total Reads],
user_updates - (user_seeks + user_scans + user_lookups) AS [Difference]
FROM sys.dm_db_index_usage_stats AS s WITH (NOLOCK)
INNER JOIN sys.indexes AS i WITH (NOLOCK)
ON s.[object_id] = i.[object_id]
AND i.index_id = s.index_id
WHERE OBJECTPROPERTY(s.[object_id],'IsUserTable') = 1
AND s.database_id = DB_ID()
AND user_updates > (user_seeks + user_scans + user_lookups)
AND i.index_id > 1
ORDER BY [Difference] DESC, [Total Writes] DESC, [Total Reads] ASC OPTION (RECOMPILE);
Run Code Online (Sandbox Code Playgroud)
您还可以使用此查询找到推荐的缺失索引(同样来自 Glenn Berry 的诊断查询):
-- Missing Indexes for current database by Index Advantage (Query 48) (Missing Indexes)
SELECT DISTINCT CONVERT(decimal(18,2), user_seeks * avg_total_user_cost * (avg_user_impact * 0.01)) AS [index_advantage],
migs.last_user_seek, mid.[statement] AS [Database.Schema.Table],
mid.equality_columns, mid.inequality_columns, mid.included_columns,
migs.unique_compiles, migs.user_seeks, migs.avg_total_user_cost, migs.avg_user_impact,
OBJECT_NAME(mid.[object_id]) AS [Table Name], p.rows AS [Table Rows]
FROM sys.dm_db_missing_index_group_stats AS migs WITH (NOLOCK)
INNER JOIN sys.dm_db_missing_index_groups AS mig WITH (NOLOCK)
ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS mid WITH (NOLOCK)
ON mig.index_handle = mid.index_handle
INNER JOIN sys.partitions AS p WITH (NOLOCK)
ON p.[object_id] = mid.[object_id]
WHERE mid.database_id = DB_ID()
ORDER BY index_advantage DESC OPTION (RECOMPILE);
Run Code Online (Sandbox Code Playgroud)
不要像建议的那样创建推荐的缺失索引,而是尝试将它们与现有索引结合起来,并找到平衡以保持索引数量较少。
归档时间: |
|
查看次数: |
754 次 |
最近记录: |