索引的核心價值
索引如同書本目錄,避免全表掃描,加速資料檢索。SQL Server 提供兩大類索引:叢集索引與非叢集索引,皆採用 B-Tree 平衡樹結構組織。
儲存基礎:資料頁
- 資料檔案邏輯劃分為連續編號的頁(8 KB),I/O 以頁為單位。
- 叢集索引的葉層即為資料頁本身;非叢集索引葉層為索引頁,指向資料列(透過 RID 或叢集鍵)。
叢集索引架構與特性
CREATE CLUSTERED INDEX IX_UserAddDate ON ASPNet_zSurvey.ZS_User (UserAddDate ASC);
- 資料依叢集鍵邏輯排序(非物理連續儲存)。
- 每個資料表僅能有一個叢集索引。
- 葉層 = 資料頁,大小約佔資料表 5%。
- 適合範圍查詢(BETWEEN、>、<)、JOIN、ORDER BY/GROUP BY 欄位。
- 不適合:頻繁更新的鍵值(導致頁分裂)、寬鍵(放大非叢集索引體積)。
非叢集索引架構與差異
- 資料列不依非叢集鍵排序儲存。
- 葉層為索引頁,包含索引鍵值 + 書籤(叢集鍵或 RID)。
- 可建立多個非叢集索引(SQL 2008+ 上限 999)。
- 適合高選擇性點查詢、覆蓋索引(INCLUDE 欄位避免書籤查找)。
圖解結構差異


設計原則速查
| 場景 | 建議索引類型 |
| 主鍵、範圍掃描、頻繁排序 | 叢集索引 |
| 外鍵 JOIN、高選擇性點查、覆蓋查詢 | 非叢集索引 |
| 大量 INSERT/UPDATE 鍵值欄位 | 避免叢集索引 |