union和union all的區別
UNION和UNION ALL關鍵字都是將兩個結果集合併爲一個,但這兩者從使用和效率上來說都有所不同。
- UNION相當於真正的關聯,會進行連接+
排序
+去重複
- UNION ALL相當於簡單把結果連接起來,
速度快
-
UNION在進行錶鏈接後將會按照字段的順序進行排序,會篩選掉重複的記錄,Union All不會去除重複記錄,也不存在排序。
-
所以從效率上說,
UNION ALL
要比UNION
快很多,所以,如果可以確認合併的兩個結果集中不包含重複數據且不需要排序時的話,那麼就使用UNION ALL。
爲了刪除重複項,必須對結果集進行排序,這可能會影響UNION的性能,具體取決於要排序的數據量以及各種RDBMS參數的設置(對於具有WORKAREA_SIZE_POLICY = AUTO的Oracle PGA_AGGREGATE_TARGET或 如果WORKAREA_SIZE_POLICY = MANUAL,則爲SORT_AREA_SIZE和SOR_AREA_RETAINED_SIZE。
各種join
powered by zhengkai.blog.csdn.net
left join(左聯接)
:返回包括左表中的所有記錄和右表中聯結字段相等的記錄right join(右聯接)
:返回包括右表中的所有記錄和左表中聯結字段相等的記錄inner join(等值連接)
:只返回兩個表中聯結字段相等的行A left join B
=B right join A
CROSS JOIN
: 笛卡爾乘積(所有可能的行對)LEFT OUTER JOIN(左外連接)
: A表滿足條件的行,和B表的所有行RIGHT OUTER JOIN(右外連接)
: B表滿足條件的行,和A表的所有行FULL OUTER JOIN(全連接)
: AB表所有的行