漢語字典正文按拼音排序,查「安」(an) 自然翻前頁,查「張」(zhang) 翻後頁。資料本身即按索引鍵順序儲存,無需額外查找表。一張表只能有一個聚集索引,因為資料只能依一種順序物理排列。
不認得字音時,先查部首目錄找到字,再按頁碼翻到正文。索引與資料分離,索引葉層存「書籤」 (RID 或叢集鍵) 指向實際資料列。需兩步驟:遍歷索引樹 → 書籤查找 (Key Lookup) 取回資料。
| 操作/場景 | 聚集索引 | 非聚集索引 |
|---|---|---|
| 外鍵欄位 | ✅ 適合 | ✅ 適合 |
| 主鍵欄位 | ✅ 適合 (預設) | ✅ 適合 |
| 頻繁 ORDER BY / GROUP BY | ✅ 適合 (預排序) | ✅ 適合 |
| 範圍查詢 (BETWEEN, >, <) | ✅ 極佳 (連續掃描) | ❌ 不適合 (大量書籤查找) |
| 低基數 (極少不同值, 如性別/狀態) | ✅ 適合 | ❌ 不適合 (選擇率太低) |
| 高基數 (大量不同值, 如身分證/交易序號) | ❌ 不適合 (分頁分裂嚴重) | ✅ 適合 |
| 頻繁 UPDATE 的欄位 | ❌ 不適合 (資料移動成本高) | ✅ 適合 (只更新索引樹) |
| 頻繁修改索引鍵值 | ❌ 不適合 | ✅ 適合 |
| 極少不同值 (如 Boolean/旗標) | ✅ 可考慮 | ❌ 避免 |
INCLUDE 非鍵欄位。NONCLUSTERED 分離兩者。INSERT/UPDATE/DELETE 皆需同步維護索引樹,權衡讀寫比例。INCLUDE 建立覆蓋索引消除 Key Lookup。sys.dm_db_index_usage_stats 移除未使用索引。