假如 UNION ALL 里面的子句 有 JOIN ,那個執行更快呢


比如: select id, name from table1 where name = 'x' union all select id, name from table2 where name = 'x'      

select * from (select id, name from table1 union all select id, name from table2) where name = 'x'.

哪一種方式性能更好一些呢? 希望高手能詳細說明下, 並且考慮到有索引和無索引的情況

結果:

 先 JOIN 縮小數據集,然后 用UNION 更快

建議使用先where再union的方式,通過過濾得到小的數據量,然后再去和其他數據做join 等處理,這應該是數據處理的一個原則。當然了,將過多的數據抓過來,經過了層層處理,最后再通過條件去過濾,這也是效率低下語句的通病。


不過,對於你的兩條語句,有可能他們的執行計划都是一樣的,不管有沒有索引的情況。

 

 

 

先用where過濾,再用union快......可以用執行計划查看COST...
也可以通過實際速度來查看...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM