【mySQL】【資料庫】union與or的區別--為什麼建議用union代替or?
阿新 • • 發佈:2022-12-11
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。