No.595-Big Countries-(LeetCode之Database篇)

数据库表


给出的数据库表如下,表名为World

+—————–+————+————+————–+—————+
|   name         | continent |    area    | population | gdp             |
+—————–+————+————+————–+—————+
| Afghanistan | Asia        | 652230   | 25500100 | 20343000    |
| Albania        | Europe   | 28748      | 2831741   | 12960000    |
| Algeria         | Africa     | 2381741   | 37100000 | 188681000 |
| Andorra       | Europe   | 468           | 78115       | 3712000     |
| Angola         | Africa     | 1246700   | 20609294 | 100990000 |
+—————–+————+————+————–+—————+

问题表述


 
如果一个国家的面积大于三百万平方公里,或者人口数大于两千五百万,那么这个国家就是一个大国

写一个SQL语句将大国的name、population、area选择出来。
 
 

问题解决


下面是我写的SQL语句:

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

提交后结果是正确的。提交后我去了讨论区,发现有更好的解决方案:

SELECT name, population, area
FROM World
WHERE area > 3000000 

UNION

SELECT name, population, area
FROM World
WHERE population > 25000000

这里写图片描述

可以看到上面这个SQL语句执行速度是要略快于第一个SQL的,这是为什么呢?

第一个SQL我们使用了OR,第二个SQL我们使用的是UNION。

用OR的子句可以分解成多个查询,并且通过UNION 连接多个查询。他们的速度只同是否使用索引有关,如果查询需要用到联合索引,用 UNION ALL执行的效率更高,但是UNION ALL不会去除重复的行。

采用OR不会用到索引,改写成UNION的形式再试图与索引匹配。一个关键的问题是否用到索引。所以我们再使用SQL查询时尽量使用UNION,如果对重复列没有要求,则尽量使用UNION ALL。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值