sql語句or與union all的執行效率比較

2022-05-06 11:00:17 字數 1212 閱讀 1864

看到一篇文章是講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則將所有的結果全...