| 場景 | 建議索引類型 | 理由 |
|---|---|---|
| 主鍵/身分證號/流水號 (唯一、遞增) | 叢集索引 | 資料物理順序 = 邏輯順序,範圍查詢極快,無書籤查找 |
| 頻繁範圍查詢 (日期區間、金額區間) | 叢集索引 | 葉層資料連續,掃描效率高 |
| 高選擇性點查詢 (姓名、信箱、代碼) | 非叢集索引 | Seek 定位快,配合 INCLUDE 可覆蓋查詢 |
| 多種查詢模式並存 | 叢集 + 多個非叢集 | 叢集支援範圍/排序,非叢集支援點查/覆蓋 |
| 極高頻寫入 (INSERT/UPDATE/DELETE) | 少建非叢集索引 | 每個非叢集索引皆需維護,寫入開銷大 |
CREATE INDEX IX_Table_Column ON TableName (ColumnName);
執行成功訊息:「This command did not return data, and it did not return any rows」。
DROP INDEX TableName.IndexName;
⚠ 必須指定 **表名.索引名**。
CREATE CLUSTERED INDEX IX_Table_Col_Clustered ON TableName (ColumnName);
WITH ALLOW_DUP_ROW (舊版) 或改建非唯一叢集索引 (新版預設允許重複,但需指定 UNIQUE 才強制唯一)。CREATE CLUSTERED INDEX IX_Table_Col ON TableName (ColumnName) WITH ALLOW_DUP_ROW;
CREATE UNIQUE CLUSTERED INDEX IX_Table_PK ON TableName (ColumnName);
✅ 最推薦模式:主鍵 + 唯一 + 叢集,查詢效能最佳。
CREATE INDEX IX_User_Name ON Users (LastName, FirstName);
UPDATE STATISTICS 或啟用自動更新。INCLUDE (SQL 2005+) 將非鍵值欄位加入葉層,避免 Key Lookup,大幅提升查詢速度。ALTER INDEX ... REBUILD/REORGANIZE) 消除碎片,更新統計資料。