在 WHERE 條件中,盡量對右側的值進行處理,而非左側欄位。例如 WHERE col1 = -5 的效率高於 WHERE -col1 = 5,因為後者對欄位值進行計算,導致優化器無法使用索引,必須掃描全表計算後再比較。
若 col1 為數值型,WHERE col1 = 2 比 WHERE col1 = '2' 效率高。字串與數值比較時,引擎需將兩者轉為雙精度再比較,增加額外開銷。
例如日期範圍查詢,WHERE col1 >= '2009-10-26' AND col1 <= '2009-10-27' 可用索引;但 WHERE DATEDIFF(day, col1, GETDATE()) = 0 因使用函數,導致 col1 上的索引失效。
包含 OR 的條件通常導致優化器採用全表掃描。應盡量拆分為多條查詢配合 UNION ALL,或重寫為 IN / BETWEEN 等可利用索引的形式。