oracle知識整理(1) union和union all的區別,left join和right join的區別(各種join的區別)

Moshow鄭鍇發表於2020-04-07

union和union all的區別

UNION和UNION ALL關鍵字都是將兩個結果集合併為一個,但這兩者從使用和效率上來說都有所不同。

  • UNION相當於真正的關聯,會進行連線+排序+去重複
  • UNION ALL相當於簡單把結果連線起來,速度快
  1. UNION在進行錶連結後將會按照欄位的順序進行排序,會篩選掉重複的記錄,Union All不會去除重複記錄,也不存在排序。

  2. 所以從效率上說,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表所有的行

sql join表

在這裡插入圖片描述

相關文章