1. 程式人生 > 其它 >【mySQL】【資料庫】union與or的區別--為什麼建議用union代替or?

【mySQL】【資料庫】union與or的區別--為什麼建議用union代替or?

LeetCode 595. 大的國家

點選直達
如果一個國家滿足下述兩個條件之一,則認為該國是大國 :

面積至少為 300 萬平方公里(即,3000000 km2),或者
人口至少為 2500 萬(即 25000000)
編寫一個 SQL 查詢以報告 大國 的國家名稱、人口和麵積。
按任意順序返回結果表。

查詢結果格式如下例所示。

用or做法:

select name,population,area from World where area>=3000000 or population>=25000000;

用union做法:

select name,population,area from World where area>=3000000
union
select name,population,area from World where population>=25000000;

區別

  • union會刪除重複的記錄,or不會去掉重複的記錄,二者都是對結果集的合併。(我覺得應該只是在處理涉及到多個列的時候會有這種區別,在對單列進行篩選的時候不會有區別)
  • union執行時先取出兩個表的結果,再用排序空間進行排序刪除重複的記錄,最後返回結果集,如果表資料量大的話可能會導致用磁碟進行排序
  • 另外一篇文章提到where子句中使用or會引起全表掃描,一般的用union來代替or。