1. 程式人生 > >Oracle基礎——union與union all的用法與區別

Oracle基礎——union與union all的用法與區別

用法:

    union和union all都可以用來對兩個或多個查詢結果進行並集操作,例如:

select * from Student1 union select * from Student2;

select * from Student1 union all select * from Student2。

    注意:union和union all 合併的兩個或多個查詢結果:列數、順序相同;對應列的資料型別可以不同但是必須相容(所謂的相容是指兩種型別之間可以進行隱式轉換,不能進行隱式轉換則報錯),也可以用顯式轉換為相同的資料型別;如果為XML資料型別則列必須等價(所有列都必須型別化為 XML 架構,或者為非型別化),如果型別化,這些列必須型別化為相同的 XML 架構集合。

區別:

    1、UNION 在執行時先取出兩個表的結果,再用排序空間進行排序刪除重複的記錄,最後返回結果集,如果表資料量大的話可能會導致用磁碟進行排序。

    2、UNION ALL只是簡單的將兩個結果合併後就返回。這樣,如果返回的兩個結果集中有重複的資料,那麼返回的結果集就會包含重複的資料了。

效率:

UNION ALL 要比UNION快很多,所以,如果可以確認合併的兩個結果集中不包含重複的資料的話,那麼就使用UNION ALL。