10年+SQL性能优化专家谈SQL等价改写核心思想

墨墨导读:2020数据技术嘉年华于11月21日落下帷幕,大会历时两天,来自全国各地的数据领域学术精英、领袖人物、技术专家、从业者和技术爱好者相聚北京,见证了个人的快速成长、技术的迭代进步、行业的蓬勃发展、生态的融合共赢,以及市场的风云变迁。

2020数据技术嘉年华近50个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“DTC2020”获得!


本文根据 罗炳森 老师在 2020数据技术嘉年华 分享的主题《SQL等价改写核心思想》整理而成。

10年+SQL性能优化专家谈SQL等价改写核心思想_第1张图片

罗炳森:云和恩墨数据库架构师,10年+专职性能优化&SQL优化经验,5年SQL优化培训经验,累计为中国培养了2000多位DBA,1000多位ETL/BI/大数据开发人才。

SQL优化可不仅仅是:收集一下统计信息,创建一些索引,添加一些HINT,绑定一下执行计划。SQL优化还需要能够对SQL进行等价改写,SQL等价改写往往是SQL优化所有环节中最难的,不管数据库是Oracle,SQL SERVER,DB2,还是MySQL,PostGre SQL,Oceanbase,Hadoop Hive等,都离不开SQL等价改写。对于某些SQL,往往只有进行等价改写才能彻底优化。

 

本文主要议题:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第2张图片

 

本文分5部分,循序渐进为大家讲解SQL等价改写的核心思想及其方法和技巧。首先我们来学习数据库中表与表之间的关系:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第3张图片

 

对表与表之间关系有个大概印象之后,我们来看一个表与表之间是1:1关系的优化案例:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第4张图片

 

只需要对SQL代码稍做改动,SQL性能立马提升200多倍。如果不对SQL进行等价改写,想要优化这个SQL是不可能的。当然了你可能会说,我可以在业务上将a和b合并,这样不也达到了优化目的了吗?是的,这样是可以优化,但是这并不属于SQL层面的优化,而是业务重构,数据模型层面的优化了,本文的主题是SQL等价改写,而非数据模型层面。

 

现在我们来学习什么是半连接:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第5张图片

了解了半连接的概念之后,下面用两种方法将半连接改写为内连接:

10年+SQL性能优化专家谈SQL等价改写核心思想_第6张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第7张图片

 

半连接也可以改写为标量子查询(后面还会介绍什么是标量子查询):

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第8张图片

 

更神奇的是半连接还可以改写为反连接:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第9张图片

了解了半连接改写技巧之后,我们来看一个经典的半连接等价改写优化案例吧:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第10张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第11张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第12张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第13张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第14张图片

通过这个案例我们回顾了半连接的改写技巧,同时也加深了对SQL等价改写的认知。

下面我们来学习什么是反连接:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第15张图片

 

反连接等价改写一般只有两种方法(不像半连接等价改写方式很多):

10年+SQL性能优化专家谈SQL等价改写核心思想_第16张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第17张图片

 

掌握了半连接,反连接等价改写之后,现在我们来学习标量子查询:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第18张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第19张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第20张图片

我们来学习标量子查询改写方法:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第21张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第22张图片

并不是所有的标量子查询都能改写为外连接:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第23张图片

 

标量子查询非等值关联改写要对主表访问2次:

10年+SQL性能优化专家谈SQL等价改写核心思想_第24张图片

现在我们来看一个比较难的标量子查询改写案例吧:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第25张图片

 

这个案例包含了半连接改写为内连接的知识,标量子查询改写为外连接的知识,以及标量子查询中没有聚合函数它属于1的关系的知识,可以这样说,如果你吃透了这个案例,那么你已经具备了一定的SQL等价改写能力了。

 

并不是所有的标量子查询都要被改写为外连接,有时候反而要将外连接改写为标量子查询。

现在,我们来看一个将外连接改写为标量子查询的案例吧:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第26张图片

 

掌握了标量子查询改写技巧之后,我们来学习本文最后一个知识点Filter:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第27张图片

 

网上有很多in,exists谁快谁慢的谬论,写这些文章的很多人是连SQL优化都没入门的,所以大家别去相信那些谬论。

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第28张图片

 

简单的Filter改写:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第29张图片

 

复杂的Filter改写:

10年+SQL性能优化专家谈SQL等价改写核心思想_第30张图片

10年+SQL性能优化专家谈SQL等价改写核心思想_第31张图片

 

最后,我们来总结一下SQL等价改写:

 

10年+SQL性能优化专家谈SQL等价改写核心思想_第32张图片

推荐阅读:144页!分享珍藏已久的数据库技术年刊

推荐下载:2020数据技术嘉年华PPT下载


2020数据技术嘉年华近50个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“DTC2020”获得!

视频号,新的分享时代,关注我们,看看有什么新发现?

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓


云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

你可能感兴趣的:(数据库,人工智能,编程语言,大数据,jdbc)