SQL查詢時,如何對where後的or進行優化
大家都知道,在sql查詢的過程中,where帶有or條件,且條件比較複雜的時候,sql的查詢速度明顯會降低,比如我在實際應用中就遇到這樣一個問題:寫了一個條件帶or的複雜sql,發現查詢速度遠不如人意,一條10000條數據不到的表,居然需要花費近4s的時間,顯然是不符合要求的(至於爲什麼會這麼慢,這個在此就不做過多解釋),這時候就要考慮到怎樣進行優化:
把or 變成兩個查詢語句,中間用 union all 進行連接
比如:
select * from t1 where 條件1 or 條件2
------>
select * from t1 where 條件1 union all select * from t1 where 條件2