記憶體排序vs磁碟排序速度差達1400倍。磁碟排序消耗臨時表空間、佔用緩衝池、引發free buffer waits、擠出熱塊。DBA必須將磁碟排序壓至最低。三大實戰策略:
SORT_AREA_SIZE參數| 隱性排序來源 | 成因 | 優化方向 |
|---|---|---|
DISTINCT | 去重需先排序 | 確認資料本身無重複則移除;或用GROUP BY配合索引 |
| Sort Merge Join | 連接鍵需排序 | 優先考慮Nested Loop Join,避免全表掃描 |
| 缺失索引 | 排序替代索引存取 | 補建適當索引,將排序轉為索引範圍掃描 |
開發階段Code Review必檢項;上線後定期掃描高排序SQL。
排序看似微小,實則效能殺手。透過參數調校、SQL重構、持續監控三管齊下,將磁碟排序從「罪魁禍首」降為可控風險。