数据库表


给出的数据库表如下,表名为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。

No.595-Big Countries-(LeetCode之Database篇)的更多相关文章

  1. 595. Big Countries --- SQL related from leetcode

    595. Big Countries There is a table World +-----------------+------------+------------+------------- ...

  2. LeetCode 595. Big Countries

    There is a table World +-----------------+------------+------------+--------------+---------------+ ...

  3. LeetCode 595. Big Countries (大的国家)

    题目标签: 题目给了我们一个 world table,让我们找出 面积大于3 million square km 或者 人口大于 25 million. 直接用两个条件搜索. Java Solutio ...

  4. c++ LeetCode (初级字符串篇) 九道算法例题代码详解(二)

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11089327.html 已经刷了很多篇leetcode题了,不过最近在找c++的实习工作(大佬 ...

  5. LeetCode总结 -- 高精度篇

    我们常见的一些主要的数据结构比方整型int或者浮点型float由于位数过多无法用内置类型存储,这时候我们就须要自己实现高精度的数据类型来进行存储和运算.这样的问题在实际产品中还是比較有用的,所以相对来 ...

  6. 595. Big Countries

    There is a table World +-----------------+------------+------------+--------------+---------------+ ...

  7. 【持续更新】leetcode算法-数组篇

    会在近期陆续地完成数组篇的整理,希望对找工作的小伙伴有所帮助.   1.Two Sum:两数相加为一固定值,求其下标.一次遍历数组,用一个hash表存储已经访问过的数及其下标,对于新访问的数value ...

  8. leetcode中Database题(一)

    Combine Two Tables Table: Person +-------------+---------+ | Column Name | Type | +-------------+--- ...

  9. LeetCode之Easy篇 ——(7)Reverse Integer

    7.Reverse Integer Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: Out ...

  10. LeetCode之Easy篇 ——(1)Two Sum

    1.Two Sum Given an array of integers, return indices of the two numbers such that they add up to a s ...

随机推荐

  1. 常见数据结构与算法的 Python 实现

    1. 排序 快速排序(quick sort) 形式一:借助 partition 辅助函数 def partition(seq): pivot, seq = seq[0], seq[1:] low = ...

  2. Net锁

    Net分布式锁的实现 序言 我晚上有在公司多呆会儿的习惯,所以很多晚上我都是最后一个离开公司的.当然也有一些同事,跟我一样喜欢在公司多搞会儿.这篇文章就要从,去年年末一个多搞会的晚上说起,那是一个夜黑 ...

  3. WPF 中的三维文字[转贴]

    原文:WPF 中的三维文字[转贴] 原文: http://msdn.microsoft.com/msdnmag/issues/07/10/Foundations/default.aspx?loc=zh ...

  4. Linux性能测试 dmesg命令

    dmesg 命令主要用来显示内核信息.使用 dmesg 可以有效诊断机器硬件故障或者添加硬件出现的问题.  另外,使用 dmesg 可以确定您的服务器安装了那些硬件.每次系统重启,系统都会检查所有硬件 ...

  5. 常用user agent

    测试user agnet的网站: http://whatsmyuseragent.com/ Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) ...

  6. 使用 NodeJS + Express从GET/POST Request 取值

    过去无论哪一种网站应用程式的开发语言,初学者教学中第一次会提到的起手式,八九不离十就是GET/POST Request 的取值.但是,在Node.js + Express 的世界中,仿佛人人是高手,天 ...

  7. 基于 CSP 的设计思想和 OOP 设计思想的异同

    LinkerLin Go语言推崇的CSP编程模型和设计思想,并没有引起很多Go开发者包括Go标准库作者的重视.标准库的很多设计保留了很浓的OOP的味道.本篇Blog想比较下从设计的角度看,CSP和OO ...

  8. javascript真假(true/false)值

    下面列出的值被当做假(false): false null undefined 空字符串 ' ' 数字 0 数字 NaN $(document).ready(function(){ var array ...

  9. PHP命名空间和自动加载初探

    参考资料: PHP手册-语言参考:http://php.net/manual/zh/language.namespaces.php   概要: 1. 声明了命名空间之后,下面的const, funct ...

  10. SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)

    原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 在可更新订阅中,在订阅设置更新方法,将 "排队更新" 设置为 " ...