天天看點

資料庫union ,和union all

在資料庫中,UNION和UNION ALL關鍵字都是将兩個結果集合并為一個,但這兩者從使用和效率上來說都有所不同 

UNION在進行表連結後會篩選掉重複的記錄,是以在表連結後會對所産生的結果集進行排序運算,删除重複的記錄再傳回結果 

實際大部分應用中是不會産生重複的記錄,最常見的是過程表與曆史表UNION 

 這個SQL在運作時先取出兩個表的結果,再用排序空間進行排序删除重複的記錄,最後傳回結果集,如果表資料量大的話可能會導緻用磁盤進行排序。 

 而UNION ALL隻是簡單的将兩個結果合并後就傳回。這樣,如果傳回的兩個結果集中有重複的資料,那麼傳回的結果集就會包含重複的資料了。 

從效率上說,UNION ALL 要比UNION快很多,是以,如果可以确認合并的兩個結果集中不包含重複的資料的話,那麼就使用UNION ALL

繼續閱讀