Sql-Server
重新排列索引以獲得更好性能的更好方法
我執行了一個腳本來查找數據庫的重疊和重複索引。
下面是上面所說的範例螢幕。
請告知我該如何安排它們,或者在刪除它們之前應該有什麼指導方針來製作更好的索引。
其中一些索引似乎有很多包含的列。表定義將為這些列的寬度提供上下文。什麼是聚集索引鍵?
您需要查看針對此表執行的工作負載。正在執行哪些查詢,多久執行一次,這是否會在未來發生變化?
我可能會從查看目前索引使用統計資訊開始,以了解如何使用索引(搜尋、掃描、鍵查找、更新)。
SELECT OBJECT_NAME([ddius].[object_id]) AS [Table name] , [i].[name] AS [index name] , i.type_desc, user_seeks, user_scans, user_lookups, user_updates FROM sys.indexes i left outer join [sys].[dm_db_index_usage_stats] ddius on ddius.index_id = i.index_id and [ddius].[object_id] = [i].[object_id] WHERE [ddius].[database_id] = DB_ID() order by [Table name]
您還可以查看缺少的索引 DMV。但是,您需要對返回的資訊持保留態度。SQL 將允許您創建重複索引,針對特定查詢“推薦”創建索引建議,但可能存在組合索引。不幸的是,索引是一個反複試驗。