最近處理工作中發現明細數據缺失了很多,排查中發現是union和union all使用不當導致,上網搜了一下兩者的區別,簡單記錄一下
一、區別1:
1、union: 對兩個結果集進行並集操作, 不包括重復行,相當於distinct, 同時進行默認規則的排序;
2、union all: 對兩個結果集進行並集操作, 包括重復行, 即所有的結果全部顯示, 不管是不是重復;
二、區別2:
1、union: 會對獲取的結果進行排序操作
2、union all: 不會對獲取的結果進行排序操作
select * from Table1 union select * from Table2
select * from Table1 union all select * from Table2
三、總結
union all只是合並查詢結果,並不會進行去重和排序操作,在沒有去重的前提下,使用union all的執行效率要比union高