SELECT * FROM [user] WHERE gender = '1' ORDER BY id DESC;
| 方案 | 索引定義 | 執行計畫特徵 | 適用性 |
|---|---|---|---|
| 1. 單欄 gender | `CREATE INDEX IX_user_gender ON [user](gender);` | Index Seek (gender) → Key Lookup → Sort (id DESC) | gender 選擇性高 (如男/女各 50%),且需排序額外成本可接受 |
| 2. 單欄 id | `CREATE INDEX IX_user_id ON [user](id DESC);` | Index Scan (id DESC) → Filter (gender='1') | 全表掃描成本高,通常最差 |
| 3. 複合索引 (gender, id) | `CREATE INDEX IX_user_gender_id ON [user](gender, id DESC);` | Index Seek (gender) → **有序輸出 id DESC,無需 Sort** | 最佳:覆蓋 WHERE + ORDER BY,避免排序與 Key Lookup (若 INCLUDE 其餘欄位) |
CREATE INDEX IX_user_gender1_id ON [user](id DESC) WHERE gender = '1';