首页 > 数据库 >【mySQL】【数据库】union与or的区别--为什么建议用union代替or?

【mySQL】【数据库】union与or的区别--为什么建议用union代替or?

时间:2022-12-11 14:56:10浏览次数:80  
标签:area union 3000000 -- mySQL World where population

LeetCode 595. 大的国家

点击直达
如果一个国家满足下述两个条件之一,则认为该国是大国 :

面积至少为 300 万平方公里(即,3000000 km2),或者
人口至少为 2500 万(即 25000000)
编写一个 SQL 查询以报告 大国 的国家名称、人口和面积。
按任意顺序返回结果表。

查询结果格式如下例所示。
Sample

用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。

标签:area,union,3000000,--,mySQL,World,where,population
From: https://www.cnblogs.com/DXD-blog/p/16973690.html

相关文章