文档章节

来测一下你有没有SQL优化基因!

 时光承诺
发布于 2017/07/14 15:26
字数 648
阅读 5
收藏 0

原文地址

 

原文

发布时间:2017-07-14 10:22:11218人关注5人参与

<震惊!慢SQL居然能优化到这种速度,我不服!>后,又一轮SQL挑战赛来了。这次是《决战紫禁之巅》,不服来战。

image

场景表述

一张小表A,里面存储了一些ID,大约几百个。

(比如说巡逻车辆ID,环卫车辆的ID,公交车,微公交的ID)。

另外有一张日志表B,每条记录中的ID是来自前面那张小表的,但不是每个ID都出现在这张日志表中,比如说一天可能只有几十个ID会出现在这个日志表的当天的数据中。

(比如车辆的行车轨迹数据,每秒上报轨迹,数据量就非常庞大)。

那么我怎么快速的找出今天没有出现的ID呢。

(哪些巡逻车辆没有出现在这个片区,是不是偷懒了?哪些环卫车辆没有出行,哪些公交或微公交没有出行)?

测试模型和数据

建表

create table a(id int primary key, info text);

create table b(id int primary key, aid int, crt_time timestamp);
create index b_aid on b(aid);

插入测试数据

-- a表插入1000条
insert into a select generate_series(0,1000), md5(random()::text);

-- b表插入1000万条,只包含aid的901个id。
insert into b select generate_series(1,10000000), random()*900, clock_timestamp();

参考SQL和查询性能

下面两条SQL都是满足查询条件的SQL,由PostgreSQL 10给出。

代表了没有做任何优化的情况下的查询性能。

postgres=# explain (analyze,timing) select * from a where id not in (select aid from b); 
                                                       QUERY PLAN                                                       
------------------------------------------------------------------------------------------------------------------------
 Seq Scan on a  (cost=179053.25..179074.76 rows=500 width=37) (actual time=4369.478..4369.525 rows=100 loops=1)
   Filter: (NOT (hashed SubPlan 1))
   Rows Removed by Filter: 901
   SubPlan 1
     ->  Seq Scan on b  (cost=0.00..154053.60 rows=9999860 width=4) (actual time=0.322..1829.342 rows=10000000 loops=1)
 Planning time: 0.094 ms
 Execution time: 4423.364 ms
(7 rows)

postgres=# explain (analyze,timing) select a.* from a left join b on (a.id=b.aid) where b.* is null;
                                                      QUERY PLAN                                                       
-----------------------------------------------------------------------------------------------------------------------
 Hash Right Join  (cost=31.52..280244.69 rows=49999 width=37) (actual time=4316.767..4316.790 rows=100 loops=1)
   Hash Cond: (b.aid = a.id)
   Filter: (b.* IS NULL)
   Rows Removed by Filter: 10000000
   ->  Seq Scan on b  (cost=0.00..154053.60 rows=9999860 width=44) (actual time=0.013..2544.321 rows=10000000 loops=1)
   ->  Hash  (cost=19.01..19.01 rows=1001 width=37) (actual time=0.342..0.342 rows=1001 loops=1)
         Buckets: 1024  Batches: 1  Memory Usage: 76kB
         ->  Seq Scan on a  (cost=0.00..19.01 rows=1001 width=37) (actual time=0.009..0.137 rows=1001 loops=1)
 Planning time: 0.173 ms
 Execution time: 4316.828 ms
(10 rows)

地址

 

本文转载自:http://click.aliyun.com/m/25973/

粉丝 0
博文 225
码字总数 0
作品 0
私信 提问
阿里云MaxCompute携手华大基因打造精准医疗应用云平台,十万基因组计算成本降低至1000美金以内

摘要:华大基因股份公司总监金鑫介绍了华大基因,并浅谈了与阿里云的情缘,包括Maxcompute等方面应用案例。一起来看下吧。 关于华大基因 华大基因是中国最领先的基因科技公司,华大基因为消除...

隐林
2017/11/22
0
0
40%消费级基因检测或涉嫌造假,大部分与癌症有关!

  随着测序技术的进步,人类正在试图解读自己,医生通过基因测序对患者进行快速的诊断,普通人则希望解开“身世”之谜:了解家族历史、遗传疾病潜在风险,更好的规划生活,规范行为,这一需...

DeepTech深科技
2018/04/11
0
0
华大基因:云计算“撬动”大基因

华大基因:云计算“撬动”大基因 “云栖奖”获奖人:华大基因研发中心副总监 金鑫 作者:阿里云研究中心 田丰 中美两国均已启动“精准医疗计划”,在这个千亿美元的“蓝海市场”中,基因技术...

田丰
2017/03/28
0
0
宝德高性能计算机揭开大熊猫基因秘密

金秋十月的深圳第十届中国高新技术成果交易会上,宝德科技因其生产的HPC高性能计算机揭开国宝大熊猫基因秘密倍受瞩目。深圳华大基因研究院十月宣布,中华大熊猫“晶晶”基因组框架图绘制完成...

张林
2010/06/05
249
1
下单接口调优实战,性能提高10倍

概述 最近公司的下单接口有些慢,老板担心无法支撑双11,想让我优化一把,但是前提是不允许大改,因为下单接口太复杂了,如果改动太大,怕有风险。另外开发成本和测试成本也非常大。对于这种...

Sam哥哥聊技术
2018/10/19
4K
24

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
6
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部