杨廷琨Oracle Code大会分享:如何编写高效SQL(含PPT)

  1. 云栖社区>
  2. 数据和云>
  3. 博客>
  4. 正文

杨廷琨Oracle Code大会分享:如何编写高效SQL(含PPT)

技术小能手 2018-05-21 11:39:22 浏览13097
展开阅读全文

2018 Oracle Code 于5月17日在新加坡拉开帷幕。作为全球开发者交流分享的年度盛会,为吸引所有领域的开发者,Oracle今年将自1996年开始的JavaOne大会更名为 Oracle Code One,涵盖全行业的高端技术人才。

4d583e468820ed167ecb23e18b178fc9dfc1b68c

云和恩墨CTO杨廷琨受邀参加,并在大会上发表主题演讲《How to write an efficient SQL》。

4d583e468820ed167ecb23e18b178fc9dfc1b68c

调查显示,SQL是目前第二大编程语言,自诞生以来40多年一直发挥着重要的作用,有50%的开发者都在使用SQL。虽然使用非常广泛,但是SQL的质量水平却并不令人满意。

b9a535047bc41a14384e9def6574371f8ec0b348

根据经验80%的数据库问题是由于SQL引起的,而80%的SQL问题来自于20%的SQL语句,在一些高并发高负载的系统中,由于一条SQL的性能问题导致数据库整体出现异常的情况屡见不鲜,这也是杨廷琨本次选择这个主题的原因,希望帮助更多的开发人员可以书写出高效的SQL语句。

6e585c3361373f90b470db221fd20532530783d9

本次主题包括四方面的内容:合理的使用新特性;数据集整体处理;设计SQL执行计划;严格过滤数据。

385d8fca6b0334f92af452839b372e4cbe3a7332

合理的使用新特性,可以避免重复访问数据,合并简化执行操作过程,缓存中执行间结果,减少自关联,高效灵活的处理一些复杂问题。因此,充分理解新特性的功能以及其适用场景,是书写高效SQL语句的基础。

14fcfca3d84706ea7ba2aa70f117a4f610620270

SQL本身是描述性语言,大部分情况下使用SQL的时候并不需要特别关注每行数据如何去处理,将数据整理处理作为思路,会发现SQL的性能会更好,而且很多时候SQL的写法也会更加简洁。

67b17b5cb23be128e982d413274dab8fcbcc33e6

好的性能是设计出来的,因此如果想写出高效的SQL语句,要从一开始就考虑好这个SQL的执行计划,驱动表是谁,采用何种JOIN方式连接到被驱动表。设计思路是一方面,另一方面是保证执行计划符合设计思路,这时候就需要用到提示的功能。熟悉提示的功能,可以更好的控制SQL的执行路径,绕过bug或性能问题,强制SQL按照设计思路去执行。

81682976a2f9db90184575a7c15b9c7204ed9668

过滤不必要的数据对于提升SQL的性能非常重要,对于一个计算10000以内质数的SQL,未经优化前需要1分12秒的执行时间,消耗17万逻辑读。

b4f8b234cbd5ee9d94c6a063fedc91dc97f2fd1e

通过严格的数据过滤,在运行的第一步消除不必要的数据,最终优化后的SQL只需要0.05秒,消耗461的逻辑读,执行时间和逻辑读都有几百倍的提升。

050ff309957fb4d8b6acae9fe8943a0a605ebb8a

杨廷琨先生是中国地区的第一批Oracle ACE总监,也是 ITPUB 论坛上最活跃的分享者之一,他日均一篇的博客更新坚持了10年之久,影响了很多Oracle DBA和开发者的学习和成长,他在SQL开发方向的积累丰富,对于性能和效率具有深刻理解。

杨廷琨先生作为中国地区技术的杰出代表,与来自世界各地的开发精英以开放的心态,共享技术成果,期间着重强调书写高效SQL的秘诀,除了之前介绍的四点之外,还要下面三个因素:多写多练:熟能生巧;深思熟虑:算法为王;坚持不懈:优化无止境。



原文发布时间为:2018-05-19
本文作者:云和恩墨
本文来自云栖社区合作伙伴“数据和云”,了解相关信息可以关注“数据和云”。

网友评论

登录后评论
0/500
评论
技术小能手
+ 关注
所属云栖号: 数据和云