使用過濾索引后,需要更新的索引變少了。然而,包含這些記錄的索引仍然需要在記錄修改時進行更新。
因為這些操作必須在每一次數據修改時進行,您應該把數據庫中不用于查詢數據的索引刪除。這樣可以減少數據庫的I/O需求和數據庫的大小。
為了查找不使用的索引,可以使用如下所示的查詢語句去查詢sys.dm_db_index_usage_stats動態管理視圖。
SelectOBJECT_NAME(sys.indexes.object_id)?TableName,
sys.indexes.name, sys.dm_db_index_usage_stats.user_seeks, sys.dm_db_index_usage_stats.user_scans, sys.dm_db_index_usage_stats.user_lookups, sys.dm_db_index_usage_stats.user_updates fromsys.dm_db_index_usage_stats joinsys.indexesonsys.dm_db_index_usage_stats.object_id=sys.indexes.object_id ANDsys.dm_db_index_usage_stats.index_id?=sys.indexes.index_id ANDsys.indexes.name?notlike‘PK%’ ANDOBJECT_NAME(sys.indexes.object_id)<>‘sysdiagrams’ wheresys.dm_db_index_usage_stats.database_id?=DB_ID() and?user_scans?=?0 and?user_scans?=?0 and?user_lookups?=?0 and?user_seeks?=?0 andsys.dm_db_index_usage_stats.index_id?NOTIN(0,1) ORDERBYOBJECT_NAME(sys.indexes.object_id), sys.indexes.name |
創建文件組
提高索引性能的一個重要方法是創建一個或多個文件組,以存儲非聚簇索引。只有非聚簇索引能夠與索引所對應的表可以存儲在不同的文件組中。如果您想要在與表不同的文件組中創建一個聚簇索引,不管它是否基于主鍵,SQL Server都會將表移動到這個新的文件組中。
將非聚簇索引與基本表分離可以將索引的存儲和I/O需求從索引對應的表轉移到其他文件組中,可以減少您對索引修改操作的時間。雖然在您的數據庫中使用多個文件組會增加數據庫的管理負載,但是最終這個改進是值得的。
當為第二個文件組創建物理文件時,一定要將文件保存到另一組物理磁盤上,這樣工作負載才能實際上轉到不同的區域。如果兩個物理文件都存儲于同一個物理區域,那么即使您能獲得一些性能提升,這個提高也不會很大。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
