這是**柔性規則**:技術上允許不同,但業務上若不可接受排序不一致,**必須強制統一**。若無 SSAS 或可接受差異,可依效能/相容性自由選擇。
| 規則 | 適用條件 (滿足任一) | 推薦排序規則 | 核心理由 |
|---|---|---|---|
| 規則一:優先二進制 | 無語言語意排序需求、追求極致效能、資料純二進位/ASCII | 二進制排序規則 (如 `Latin1_General_BIN2`) | 比較最簡單 (位元級)、最快、不受語言影響、索引效能最優 |
| 規則二:適用 Windows 排序 | 1. 同時部署 SSAS 需一致性 2. 同時存在 `NCHAR/NVARCHAR` (Unicode) 與 `CHAR/VARCHAR` (ANSI) 混用 3. 僅用 `CHAR/VARCHAR` 且極少用 `LIKE` | Windows 排序規則 (如 `Chinese_Taiwan_Stroke_CI_AS`) | 統一 Unicode/ANSI 比較語意、SSAS 相容、跨應用 (Excel/OS) 排序一致 |
| 規則三:適用 SQL Server 排序 | 大量 `LIKE` + `ORDER BY` 查詢、需提升此類查詢效能、可接受與 OS/Excel 排序不一致 | SQL Server 排序規則 (如 `SQL_Latin1_General_CP1_CI_AS`) | 對 LIKE 模式匹配優化顯著、大結果集排序加速、但犧牲跨環境一致性 |
開始 ├─ 是否部署 SSAS? → 是 → 必選 Windows 排序 → 結束 ├─ 是否混用 Unicode/ANSI 欄位? → 是 → 必選 Windows 排序 → 結束 ├─ 是否極度追求效能且無語言排序需求? → 是 → 選二進制 (BIN2) → 結束 ├─ 是否大量 LIKE+ORDER BY 且接受跨環境不一致? → 是 → 可考慮 SQL 排序 → 結束 └─ 預設 → 選 Windows 排序 (對應 OS 區域,如 Chinese_Taiwan_Stroke_CI_AS)
排序規則選擇是**架構級決策**,影響資料排序、比較、索引效能、跨系統一致性。遵循「SSAS 強制 Windows、混用字元集強制 Windows、極致效能選二進制、大量 LIKE 可考慮 SQL」四大原則,並在安裝精靈中審慎勾選。記得:`tempdb` 繼承實例排序,跨庫操作隱性依賴實例排序,不要留遺憾。