看到一篇文章是講sql語句or與union all的執行效率比較的,以前沒怎麼注意這個問題,感覺文章寫的不錯,轉來一看。
sql語句or與union all的執行效率比較
當sql語句有多個or語句時,可以考慮使用union或者union all代替來提高速度。使用or的sql語句往往無法進行優化,導致速度變慢。但這不是固定的,有時候使用or速度會更快些。具體情況還要經過測試為準。如果加索引的話,也可能實現速度優化。
實驗**如下,實際資料有2,000,000條,從裡面返回大約最多1000行左右的資料。xy
inline
cdpt
12002400
5801000
300300
3400
12002408
5801005
300301
3402
12002416
5801010
300302
3404
12002424
5801015
300303
3406
......
......
...or語句(部分節選)
select * from tablename where (cdp= 300 and inline=301) or (cdp= 301 and inline=301) or (cdp= 302 and inline=301) or (cdp= 303 and inline=301) or (cdp= 304 and inline=301) or (cdp= 305 and inline=301) or (cdp= 306 and inline=301) or (cdp= 307 and inline=301)
union all語句(部分節選)
select * from tablename where (inline= 300 and cdp=300) union all select * from tablename where (inline= 301 and cdp=300) union all select * from tablename where (inline= 302 and cdp=300) union all select * from tablename where (inline= 303 and cdp=300)
返回不規則的900條資料,前者用了60多秒,後者用了8秒左右。
Oracle中Union與Union All的區別
如果我們需要將兩個select語句的結果作為乙個整體顯示出來,我們就需要用到union或者union all關鍵字。union 或稱為聯合 的作用是將多個結果合併在一起顯示出來。union和union all的區別是,union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全...
Oracle中Union與Union All的區別
如果我們需要將兩個select語句的結果作為乙個整體顯示出來,我們就需要用到union或者union all關鍵字。union 或稱為聯合 的作用是將多個結果合併在一起顯示出來。union和union all的區別是,union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全...
Oracle中Union與Union All的區別
如果我們需要將兩個select語句的結果作為乙個整體顯示出來,我們就需要用到union或者union all關鍵字。union 或稱為聯合 的作用是將多個結果合併在一起顯示出來。union和union all的區別是,union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全...