1. 聚能聊>
  2. 话题详情

大奖公布!慢SQL居然能优化到这种速度,速围观!

速围观大师分析阿里云慢SQL优化挑战大赛:https://yq.aliyun.com/articles/183749

大奖名单公布!

_

阿里云数据库挑战赛!来战!

第一季:挑战玄惭之 慢SQL性能优化赛

数据库领域的各位大神、大咖、大仙!

炎炎夏日,酷暑难耐!何不来点更刺激的,HIGH一HIGH!

挑战玄惭!挑战MySQL慢SQL性能优化极限!

玄惭,何许人也?
玄惭,真名罗龙九,阿里云DBA专家,负责阿里云RDS线上稳定以及专家服务团队,人称“大师”!
他,经历阿里历年双11考验,积累了6年对阿里云数据库用户的运维、调优、诊断等丰富的经验。
他,就是本次挑战赛的出题人!
经过他优化过的慢SQL,执行只需 2.09 ms 。
本次,我们就是要挑战这个结果!没有最好,只有更好!

只要参加挑战,即有机会获得 __阿里云纪念版T恤__!

每周人气最高者,还可获得 __王坚博士的《在线》__!

挑战成绩最优者,不仅能拿酷炫机械键盘,褚霸还要请你喝茶!

是时候证明自己了!COME ON~

tate130816_08_001

参赛前提:没有!木有!NULL!任何人都可以来挑战!

挑战赛时间:即日起 至 2017年8月24日中午12:00

挑战赛规则:

1、挑战者需在指定的数据库环境,优化组委会提供的慢SQL。
2、挑战者需:
1)将优化过程的可执行脚本发邮件给楼主(shuping.yansp@alibaba-inc.com),由数据库专家团队复审,邮件标题为【您的云栖社区昵称+慢SQL挑战赛】;
2)将优化结果截图回复本话题。
可以不限次更新结果,最终成绩以您最近发的邮件过程为准。
3、挑战者可呼朋唤友,为自己的挑战结果增加点赞量或回复数。
4、请保护好自己的尊严,一旦发现数据造假,立即取消比赛资格。

挑战流程:

DingTalk20170715220416
戳这里下载指定待优化SQL

   温馨提示:以下几种环境参与比赛均可:
  1)自建MySQL数据库,优化SQL;
  2)阿里云数据库MySQL版,优化SQL;
  3)若以上都没有,可申请阿里云免费试用套餐,只需完成认证,最长可用半年。[戳这里申请](https://free.aliyun.com/)。

重要的事情说三遍——只截图结果即可!只截图结果即可!只截图结果即可!

举个栗子:
【我要挑战】+image
优化过程的可执行脚本请通过邮件方式发给楼主(shuping.yansp@alibaba-inc.com)。
邮件标题写:您的社区昵称+慢SQL挑战赛,比如:好麦+慢SQL挑战赛

挑战赛奖项及奖品:

image
注:所有奖品将在挑战赛结束后的一周内发放。楼主会单独联系获奖者哦~

还等什么,快来挑战吧!

===============================我是优雅的分割线======================================
PS1:本挑战赛最终解释权归阿里云数据库团队所有。
PS2:挑战赛之外,我们也准备了干货以飨读者: MySQL大神的性能优化、故障排查、最佳实践秘籍——阿里云数据库专家玄惭的“武功”全记录

参与话题

奖品区域 活动规则 活动已结束,可继续参与讨论哦

  • 奖品一

    云栖定制电脑包 x 1

402个回答

26

小柒2012

键盘是我的 谁也不要抢~~~!

A表数据:16385 B表数据:16385 C表数据:360449

第一步:加索引 简单粗暴
【我要挑战】+123

只是简单的加了一个索引,40ms左右,目测玄惭的执行时间,至少应该是19ms或者29ms,更有可能是09ms!!!!!!!!!!

如果你此时EXPLAIN 一下发现Extra参数,居然有Using filesort 和Using temporary以及useing join buffer,这会让查询很吃力。

显然,肯定有更优的方案。

第二步:分步查询
【我要挑战】+123

如果此时你再EXPLAIN 发现Extra参数中abc表都是 Useing WHERE,当然还有一个是USING filesort。

第三步:Using filesort 优化 加索引

【我要挑战】+345

显然还是没到极致,离00009ms还差很远。

最后的最后,我发现居然是0000ms。

【我要挑战】+345

至此,我都绝望了,最终发现、聊主给的SQL里面有个大坑~~~

这是在没有修改字段类型的基础上的,聊主没说可以修改,也没说不可以,对吧?

当然 对比了一下自建数据库和阿里云RDS,还是有些差别的,比如阿里云RDS目前还没优化到0.00sec的时候,但是自建的已是0.00sec。

本来加索引的字段,在自建数据库上ok,到RDS上就成了全表扫描。

自建数据库 对于数值和字符串是区分对待的,也就是所谓的隐式转换,但是RDS貌似好像屏蔽了这一点。有些字段加了索引RDS也不走,但是自建数据库走索引,什么鬼?

如果没有特殊业务需求,如果可以修改字段类型,也是必须的(前提是没有特殊要求)。

阿里云RDS:
1234

本地5.7版本最终数据(只加索引,不修改字段类型):
1234567

修改字段类型后:
bianziduan

巴洛克上校 回复

支持你!加油

好麦 回复

好看你哦!

小柒2012 回复
回复@好麦:

左看还是右看~~

聚小编 回复

柒哥V5~~

conanco 回复

第二个不是300ms[一脸懵逼]

小柒2012 回复
回复@conanco:

我错了~看走眼了,本来建了两个库,在aliyun_old 没加索引的库上查询的~已改正

巴洛克上校 回复

加油!加油!加油!

好麦 回复

厉害了word哥!代码可以不用截图啊,万一有人和你一样的肿么办!楼主深深滴被困扰

光山居士 回复

come on!

小柒2012 回复
回复@好麦:

第一个截图 是原版代码 没动过~~~

好麦 回复

干得好!

屁孩儿 回复

是不是 已经绝望了 生无可恋了~~~

三好青年柒 回复

我不服 有本事 你优化成负数!!!

好麦 回复

厉害!0.00后面是啥呢?很好奇啊!记得把优化过程和SQL发楼主的邮箱哟,shuping.yansp@alibaba-inc.com,邮件标题请写:【云栖社区昵称+慢SQL挑战赛】

小柒2012 回复
回复@好麦:

讲真 0.00后面已经没数字了 控制台给的

巴洛克上校 回复

胜券在握啊,等着请你喝下午茶吧哈哈

小柒2012 回复

自建 数据库 明显有问题 和阿里云RDS查询 好多差别~~~

巴洛克上校 回复

那肯定的啊

姝垚 回复

加油~~~

乔川 回复

棒棒哒!

屁孩儿 回复

看好你哦

shirly2016 回复

助攻

小柒2012 回复
回复@姝垚:

谢谢 三土

聚小编 回复

我猜你不认识那个字~~~^-^

林妙可 回复

RDS 搞什么鬼 29ms~~~

小柒2012 回复

路遥知马力 日久见人心 我还是知道的额

1960388297553107 回复

厉害了word哥!NB啊!!

spcno 回复

666社会社会

1400188801042629 回复

∑6×10^i

晨思飘 回复

最终版,不继续优化了吗

小柒2012 回复

0.4ms 感觉 **09 里面有点

沁心之贝 回复

结束了吗

asthon 回复

好厉害好厉害

皇家贝亮 回复

U

聚小编 回复

来在继续哦~~白热化阶段呢!快来参加

定海神棍 回复

棒,这优化结果,也是没话说

linsp 回复

围观

三叶 回复

V5

滕云龙 回复

你好,请问能不能分享下优化过程 569914877@qq.com
单纯作为学习一下,绝对不会盗取你的成果

熊貓 回复

实在牛

那个老白 回复

已经结束了。。求大大分享优化过程谢谢谢谢~

评论
11

要上天 已获得云栖定制电脑包

这是公布获奖名单楼,这是公布获奖名单楼,这是公布获奖名单楼!

恭喜 各位 获奖的朋友!
今天下午就要揭晓最高的大奖获得者啦,快关注 数据库在线峰会 ,演讲嘉宾是玄惭的那一场噢!https://yq.aliyun.com/promotion/274
各位获奖的小伙伴们请将你们的邮寄地址邮件发给楼主哟~~
image

玄惭大师的直播培训结束,点击 https://yq.aliyun.com/webinar/play/240 观看视频录播。

上海小胖 回复

这是晚了一步么。。刚提交。。。

聚小编 回复

wowo~~已经开始发奖了,给力!~~

姝垚 回复

恭喜whosoft!

好麦 回复

没关系,每个工作日都有抽奖哟!

好麦 回复

大家!今天下午17:00要统计人气啦,赶紧拉票喔!

sheeta 回复

楼主5毛加了没有?

聚小编 回复

@小柒 稳稳的人气大奖啊!~

小柒2012 回复

哈哈 坐稳了 送你上头条~~

whosoft 回复

我的中奖感言:首先感谢阿里云,谢谢cctv,mtv,xtv,还有楠姐、表妹,以及关心和支持我的所有好朋友们。
我很开心,也很高兴,而且还很激动。
我想,虽然前进的道路非常艰难,但我相信,有了你们的支持和关爱,我一定会走的更远,飞的得高,谢谢大家!

魔咒626 回复

恭喜恭喜

小崽崽 回复

你看你,一激动把字都打错了, 走的更远,飞的更高,打成了 飞的得高。你这是要飞上天啊。·`

聚小编 回复
回复@whosoft:

你应该感谢 社区TV 、聚能聊TV,哈哈哈哈~!

好麦 回复
回复@sheeta:

老板说楼主还需努力。。。

巴洛克上校 回复
回复@whosoft:

哈哈哈,恭喜恭喜

神宙网 回复

多些简单明了的程序

喪冬 回复
回复@好麦:

如果有多种思路可不可以一并交上去?还有邮件标题的昵称是账号id吗?还是评论的蓝名?

好麦 回复
回复@喪冬:

您最好提交一个时长最短的思路。昵称是评论的蓝色名字。

神谕 回复

= =哇 感谢。

聚小编 回复

都100+了,竞争好激烈啊 @好麦,要不要透露一下目前最少时间是多少,让广大参赛选手,有机会赶超哦~

1394178867686875 回复

幸运奖怎么获

好麦 回复

幸运奖是在所有参赛者中抽奖得到的,每天抽一次,已经获奖的参赛者不再参与抽奖。

【秌】 回复

这个.....运行速度跟电脑性能有关^!~!^

要上天 回复

嘚!所以,要复核~~(^o^)/~

275257447657474588 回复

竟然中奖了。。。。

风月无边 回复

开心,就是不知道2.9ms的答案是?

喪冬 回复
回复@好麦:

能不能把所有人的名字和成绩列出来,能够对自己的水平有一个直观的了解,最少也让选手知道自己的成绩吧qwq 然后希望能够公布一下优秀的答者的方案,好想学习一下啊。

艺术名家 回复

学习

fxxph 回复

第一参加,就中奖咯~

好麦 回复

whosoft,您获得了超级幸运奖,麻烦把收货地址和联系方式发到楼主的邮箱:shuping.yansp@alibaba-inc.com。以便给您寄送奖品,谢谢!

评论
9

咩叔

【我要挑战】+RunResult
额,测试了三种方案,这是其中最快的一个方案的运行时间。其他两个方案速度和大家的都差不多。
那啥,优化思路已经发楼主邮箱了,萝莉控怪蜀黍71392118 就是我。
楼主收到邮件麻烦回复一下。

kiki061 回复

哇 怪蜀黍哎~ 小数点后面4个0哎~我只优化到3个0。膜拜ing~大佬

rouput 回复

卧槽!头一次看到!厉害了大佬!!!

哈哈哈2222 回复

我是小萝莉,没见过这么厉害的蜀黍,无比崇拜啊!

jrjzx 回复

厉害

1012200888116907 回复

厉害了我滴哥~

1063196572839179 回复

厉害了我的咩...

1562900888518557 回复

厉害了我的咩...

1962900888703446 回复

哇(@ο@) 哇~~~小萝莉跪求认识怪蜀黍!

1414100888983622 回复

咩咩咩咩~~~~

1775300890516474 回复

厉害了我的叔。。。。咩~~~

好麦 回复

收到!厉害!

梦幡猫哥 回复

最牛!

咩叔 回复
回复@好麦:

谢谢楼主。电脑包用不上,给件t桖吧。洒家是胖子,要大号的~~~一会到你楼下去取哈

好麦 回复
回复@咩叔:

这。。怪蜀黍你获得的是最高人气奖,是王坚博士的书。。

聚小编 回复

怪叔叔懵圈了~~~

评论
0

浮生递归

@巴洛克上校 这题看你怎么参加,哈哈

好麦 回复

看来是高手,挑战终极大奖吧!!

巴洛克上校 回复

@浮生递归 鄙视你!我做前端的数据库不太擅长

聚小编 回复

你可以的,加油!哈哈~

浮生递归 回复

小编又现身了,之前问你的问题好像都没回复。除了在评论下找你的踪迹来回复外,还有什么渠道

聚小编 回复

还有@浮生递归 大人,你不能光说别人啊!

巴洛克上校 回复

谢谢! 艾玛呀,可找到你了,奖品发乱套了都!

浮生递归 回复

我有时间在搞这个优化试试啊,数据库优化不是我长项。不过这东西很有意义,值得尝试。奖品发放里的EMAIL发咨询邮件过去,石沉大海啊。我就想问问技术新书是不是都是同一本啊

浮生递归 回复

没有乱套。奖品发放本来就是无规律,看奖品库存情况发的。并不是按什么话题结束时间。一般都是比结束要早。

巴洛克上校 回复

乱了明明收到一个公仔 显示发了三个

聚小编 回复

我来了~内个,我怎么觉得我加过你其它联系方式呢。别急别急,我主动加你一下

巴洛克上校 回复

加我通过什么加我???

云木西 回复

让你见识一下@聚小编的万能...

巴洛克上校 回复

我到真想见识见识 哈哈

浮生递归 回复

估计是你账号里的注册资料

浮生递归 回复

有多万能,能解决@巴洛克上校 的单身问题吗

聚小编 回复

他还单身???

巴洛克上校 回复

不能,他们应该没有查看客户信息的权限。

浮生递归 回复

心动了?我给你引荐下?

评论
3

whosoft

如果没人参加的话,一个多月后,咱们杭州见~~~

【我要挑战】+ whosoft

好麦 回复

帅哥,代码暴露了,而且,貌似,没有任何修改?需要优化哟~

巴洛克上校 回复

加油

聚小编 回复

加油,争取来杭州

whosoft 回复

至少题目是已经看懂了,而且查看出来的结果也是正确的。。
键盘和喝茶就不奢求了,希望能中个 超级幸运奖

好麦 回复

敢于挑战就是勇士!祝你好运~

聚小编 回复

听说你中奖了,恭喜恭喜!

steve-gates 回复

听说你中奖了,恭喜恭喜!

vacny 回复

我想问,是不是我瞎了?0.7秒??你这个也叫优化吗?

风月无边 回复
回复@好麦:

哦,这个意思啊,原来SQL是可以改的啊。

评论
5

白犀

【我要挑战】+alisql1

这回真有进步了,安慰下自己···aliy2

到0.00了,谁知道再具体点的时间怎么看?aliysql3

开个慢查询日志能看到具体时间了

行左向右 回复

具体时间怎么看呢?

conanco 回复

set profile = 1;execute sql;show profiles

白犀 回复

log_slow_queries=slowlog
long_query_time=0.0001

好麦 回复

恭喜您获得最高人气奖!

好麦 回复

白犀,麻烦您将收货地址邮件发给我,给您寄送奖品!shuping.yansp@alibaba-inc.com

白犀 回复
回复@好麦:

刚刚邮件发给你了,我的邮箱是641759847@qq.com.用这个邮箱发的,谢谢啦

评论
3

margin张

【我要挑战】
本地mysql 0.335毫秒(ms)
QQ_20170719104631QQ_20170719110325

阿里云RDS 0.83毫秒(ms)
QQ_20170719151005

jkant 回复

0.0~~厉害

查理的腿毛 回复

666

好麦 回复

找到了!收到!

好麦 回复

恭喜获得超级幸运奖!

margin张 回复
回复@好麦:

哇,谢谢

滕云龙 回复

你好,请问能不能分享下优化过程 邮箱569914877@qq.com
单纯作为学习一下,绝对不会盗取你的成果

评论
3

陌路~

【我要挑战 】
阿里云的大大们。
我就随便加了一下索引。然后就0秒了
sql 根本没有怎么优化。
这简直就不是我的性格。太简单。没啥挑战呀。。

就觉得不对劲。所以我就把插入查询都重复执行了一次
导致目前数据库中的数据量:a表 8389120 b 表:8389120 c表:2883585
screenshot
screenshot
screenshot

查询总数量都要一秒多。。。

screenshot

整个语句执行下来 我只用了1秒钟。

screenshot

放出原本要求的优化

零秒根本没有压力好么?
screenshot

screenshot

7月19号更新
修改表结构以后

screenshot

希望能中个幸运奖

好麦 回复

亲,只放运行结果的图就可以了哈~

好麦 回复

收到!

陌路~ 回复
回复@好麦:

更新表结构后是不是需要重新发邮件?

好麦 回复
回复@陌路~:

对呀。过程有更新就再发一次哦~

要上天 回复

恭喜您获得最高人气奖!

评论
6

似水的流年

上午上课的时候研究了下,发现优化前后差好多
QQ_20170714134407
date_
QQ_20170714140557

好麦 回复

这位应该是00后吧?!记得把优化过程发楼主邮箱哟,邮件主题写您的昵称+慢SQL优化赛,邮箱:shuping.yansp@alibaba-inc.com

似水的流年 回复
回复@好麦:

接近 哈哈~~

聚小编 回复

厉害了~都是0.00啊

评论
1

1812285136572075

【我要挑战】+image

好麦 回复

楼主还没有收到您的邮件噢~

1044899093698587 回复
回复@好麦:

优化过程的可执行脚本咋弄呀

1044899093698587 回复
回复@好麦:

我没有优化。。直接在云服务器装的mysql5.7 导入sql语句后。。

1812285136572075 回复
seller_id seller_name user_name state
100016 uniqlq s 0

1 row in set (0.09 sec)

要上天 回复

就是写您做这个题目,执行了哪些语句。

要上天 回复

收到!

要上天 回复

恭喜您获得最高人气奖!

1812285136572075 回复

谢谢 哈哈哈

评论
0

小雷子~

现在才看到这个活动。。。希望可以中个幸运奖。。。。

【我要挑战】11,0.00s

【我要挑战】33

尝试了很多写法,但是稳定不在0.4ms内,只有偶尔几次执行0.4ms,平均0.6ms,希望最后可以看到大牛的优化方案

好麦 回复

收到!只放结果的截图即可,其他需要删除。谢谢!

好麦 回复

恭喜您获得超级幸运奖!简直想什么来什么,酷爱去买彩票,O(∩_∩)O~

小雷子~ 回复
回复@好麦:

哇!激动!!!

动力24 回复

【我要挑战】

肥龙 回复
回复@好麦:

你好,活动结束后会分享优化过程吗?

要上天 回复
回复@肥龙:

您好!会的,请关注8月24日的阿里云数据库在线峰会,会公布最终大奖和优化思路。也会有博文分享。

评论
1

李硕爱阿狸

【我要挑战】
话说是不是不能改变表结构的,否则就不算你们要求的数据库环境了?
RDS下测试结果:
QQ_20170718105443

07-19更新
_
0.5ms

好麦 回复

可以改表结构噢

好麦 回复

收到!

好麦 回复

恭喜您获得超级幸运奖!

李硕爱阿狸 回复
回复@好麦:

谢谢~

评论
0

1291399760305256

打开这个话题的时候我已经崩溃了,转了十几秒,是不是这个没有优化,哈哈,说实话我每天都被sql server 卡慢所困扰,希望在这里有所收录。
155d67b939694d01a38f544421872332_1_1499960015.486161.jpg

好麦 回复

这。。这。。这。。。卡?

聚小编 回复

收藏这个话题,多关注,相信一定能够有所帮助

周梦康 回复

好了~

聚小编 回复

亲,感谢反馈哦,卡的问题已解决

1172856306218335 回复

收藏看看。。。。。。。。。。。

咩叔 回复

sql server卡慢的问题有时候很好解决的。可以@我哦

评论
2

花裤衩居然

_
这是之前的
_
这是优化后的

云木西 回复

wo~wo~~又一个0.00~~@好麦,如果大家都是0.00,你该如何?

好麦 回复

嗯,可能大家的单位不能到毫秒,组委会会根据挑战者邮件反馈的优化过程,在同一个环境重现一次,会有最终ms的结果。

好麦 回复

收到!

评论
-1

ap1253j8y

等我 正在准备数据
112e9e60568245b8aaae01f6e83227d5_1_1499936691.410185.jpg

好麦 回复

嗯,等你!

1630700024168065 回复
回复@好麦:

可以修改表结构么

好麦 回复

可以的。

idealities 回复

😄

聚小编 回复

话说你数据准备好了没

评论
2

nndtar

【我要挑战】+ _
目前只能到这个地步了,pro

好麦 回复

收到!

好麦 回复

恭喜您获得超级幸运奖!

nndtar 回复
回复@好麦:

:)

评论
1

welyss

mysqlmatch
抽个奖,万一中了呢

好麦 回复

收到!

好麦 回复

恭喜您获得超级幸运奖!

阳春白雪08 回复

阿里云优惠券分享给你,
https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ecw04enl&utm_source=ecw04enl
用优惠券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。 注意在手机上下订单不能使用优惠券的哦。
您的八折推荐码如下:vl9sqt,a9wlha,4lvolc,zo9gj0,ciqa6f,amzwf8,qh6tzz,0f6hfv
领取阿里云优惠券,快来用RDS 吧,最新有金融行业专用的RDS哦。

评论
2

神谕

--- 混个t恤或电脑包有可能性么。

【我要挑战】
11

【我要挑战】
1

这条的执行计划:
222

暂时是这个结果,容我再想想能不能更低。
清理了cache多次跑,基本上稳定在0.6ms左右。

--- 等待更新

好麦 回复

收到!

聚小编 回复

wowo~~小数点后四位啦~~

要上天 回复

恭喜获得超级幸运奖~~

神谕 回复

多谢多谢

评论
3

rulicn

【我要挑战】+QQ_20170802144431
3333

  1. 优化前:
    _
  2. 优化后:
    _1
好麦 回复

收到!

评论
1

定海神棍

兄弟们,不用RDS,你的优化就跟博主的题目不在一个频道上。。。。

定海神棍 回复

好麦,你说是不是 :)

好麦 回复

hhhhh,本题主要考过程和思路,已经收到很多人的答案接近标准答案了,大家都很棒呀!!

nnb 回复

这样的题也有标准答案,看样子阿里RDS专家团队还真够自信的。

手辨 回复

后面应该是在同一个主机上做验证的吧

评论
19
46027
浏览
90
收藏
邀请他人互动
关注
7
粉丝
63
话题
2

简介:

阿里云数据库RDS资深运营

一种稳定可靠、性能卓越、可弹性伸缩的数据库服务。基于飞天分布式系统和全SSD盘高性能存储,支持主备版和集群版两套...

RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...

MySQL 是全球最受欢迎的开源数据库,阿里云MySQL版 通过深度的内核优化和独享实例提供稳定极致的数据库性能...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...