當 SQL Server 資料庫執行個體具有高索引片段時,可能會降低 SQL 查詢效能

文章翻譯 文章翻譯
文章編號: 2755960 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

如果索引細微分割時 Microsoft SQL Server 資料庫執行個體中,可能會降低 SQL 查詢效能。您可以使用sys.dm_db_index_physical_stats系統函式來偵測索引片段,針對下列情況:
  • 指定的索引
  • 在資料表上的所有索引
  • 索引檢視表的所有索引
  • 在資料庫中的所有索引
  • 所有資料庫中的所有索引
若要判斷是大於百分之 30 的片段,請執行下列的 SQL 查詢指令碼:

SELECT OBJECT_NAME(i.OBJECT_ID) AS TableName, OBJECT_NAME(i.OBJECT_ID) AS TableName, i.name AS IndexName,i.name AS IndexName, indexstats.avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') indexstats INNER JOIN sys.indexes i ON i.OBJECT_ID = indexstats.OBJECT_ID WHERE indexstats.avg_fragmentation_in_percent > 30 AND i.index_id = indexstats.index_id
若要判斷最佳的方法,以修正分散程度,請參閱下列的指導方針:
  • 使用變更索引重建與 (ONLINE = ON) 1命令物件其平均百分比的分散程度是超過 30%。
  • 使用 [變更索引重新組織指令分散其平均程度百分比是介於 5 到 30%的物件。

摺疊此表格展開此表格
avg_fragmentation_in_percent修正陳述式
> 5%,< ==""> ALTER 索引重新組織
> 30 %變更使用的索引重建 (ONLINE = ON) 1
附註
  • 這些值會提供粗略的指導方針,來判斷此時您應該變更索引重新組織變更索引重建之間切換的點。不過,實際的值可能會不同情況。您必須以實驗決定最佳的臨界值,為您的環境。
  • 片段 (少於 5%) 非常低層級不應該處理由兩個命令。這是因為重組或重建索引的成本大幅通常不如移除這類少量的分散程度的好處。

其他相關資訊

如需有關如何重新組織並重建索引的詳細資訊,請前往下列 Microsoft 網站:
如何重新組織並重建索引

下表提供有關產品或自動檢查有這種情況您 SQL Server 的執行個體,並用以評估此規則的 SQL Server 產品版本的工具的詳細資訊。
摺疊此表格展開此表格
規則的軟體規則標題規則描述用以評估此規則的產品版本
System Center 顧問SQL Server 高 fragmentations 可能會降級查詢效能System Center 警告器會藉由檢查邏輯片段 avg_fragmentation_in_percent 中的值 sys.dm_db_index_physical_stats 每個 SQL Server 資料庫執行個體索引。如果索引或堆積的平均分散大於 5%,則會產生此警示。從這份文件來解決高索引 fragmentations 相關的問題,請遵循的指示。SQL Server 2008

SQL Server 2008 R2

SQL Server 2012

屬性

文章編號: 2755960 - 上次校閱: 2012年9月27日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Web
關鍵字:?
kbsurveynew kbhowto kbexpertiseadvanced kbmt KB2755960 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:2755960
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com