美文网首页
[SQL] LeetCode题解 #595 大的国家

[SQL] LeetCode题解 #595 大的国家

作者: 半为花间酒 | 来源:发表于2020-05-10 11:57 被阅读0次

    对SQL语句不熟悉欢迎查看我整理的笔记:[SQL] MySQL基础 + python交互

    转载请注明:陈熹 chenx6542@foxmail.com (简书:半为花间酒)
    若公众号内转载请联系公众号:早起Python

    题目:

    简单题 #595

    SQL架构

    Create table If Not Exists World (name varchar(255), continent varchar(255), area int, population int, gdp int);
    Truncate table World;
    insert into World (name, continent, area, population, gdp) values ('Afghanistan', 'Asia', '652230', '25500100', '20343000000');
    insert into World (name, continent, area, population, gdp) values ('Albania', 'Europe', '28748', '2831741', '12960000000');
    insert into World (name, continent, area, population, gdp) values ('Algeria', 'Africa', '2381741', '37100000', '188681000000');
    insert into World (name, continent, area, population, gdp) values ('Andorra', 'Europe', '468', '78115', '3712000000');
    insert into World (name, continent, area, population, gdp) values ('Angola', 'Africa', '1246700', '20609294', '100990000000');
    

    题解

    这道题被誉为LeetCode题库里最简单的一道题
    基本上只要看一遍题目就可以轻松写出如下语句:

    SELECT name, population, area
    FROM World
    WHERE area > 3000000 
    OR population > 25000000;
    

    这里补充一种特殊情况,如果该表设置了索引有没其他更好的办法
    如果数据量很大,查询就要考虑优化,常常会建立索引
    如果依然用上述解法,OR会放弃查询优化,即使基于索引列也不会用B+树而是普通扫描

    因此这里给出另一种可以利用索引的解法:UNION

    SELECT name,population,area 
    FROM World 
    WHERE area > 3000000 
    UNION
    SELECT name,population,area 
    FROM World 
    WHERE population > 25000000;
    

    相关文章

      网友评论

          本文标题:[SQL] LeetCode题解 #595 大的国家

          本文链接:https://www.haomeiwen.com/subject/wpzdnhtx.html