首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

從效能角度選擇 SQL Server 叢集索引鍵的核心原則

     編輯:關於SqlServer

核心原則:叢集索引鍵應唯一、窄、靜態、遞增

  1. 唯一:非唯一鍵會產生 uniquifier(4 bytes 額外開銷),導致鍵值變大、頁面分裂增加、非叢集索引書籤膨脹。
  2. 窄:鍵值越窄,非葉層節點可容納更多列,樹高更矮,非叢集索引更小。
  3. 靜態:避免更新叢集鍵,否則等同刪除+插入,引發頁面分裂與碎片。
  4. 遞增:如 IDENTITY、NEWSEQUENTIALID(),新資料寫入尾端,減少頁面分裂。

實測:非唯一叢集索引頁面數暴增

測試表 10 萬筆,每 2 筆重複鍵值,佔用 359 頁;改為唯一鍵後僅 247 頁,節省 31% 空間。

常見錯誤選擇

  • GUID (NEWID()):隨機分布,嚴重頁面分裂、碎片化。
  • 複合鍵過寬(如 CHAR(50)+DATETIME)。
  • 業務鍵可更新(如訂單狀態碼)。

特殊場景妥協

若業務強制要求非唯一/可更新鍵,可考慮:

  • 加 IDENTITY 欄位做叢集索引,業務鍵建唯一非叢集索引。
  • 使用 UNIQUEIFIER 隱含行為,但需接受額外儲存與維護成本。

RID 與叢集索引 B 樹對比

測試資料插入腳本

頁面統計結果

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved