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

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

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

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

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

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

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

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

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

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

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

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

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

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2018-05-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

出乎预料:开发人员是如何使用数据库的?

结合最近JetBrains公司(就是出品IntelliJ IDEA的)的一份调查报告,我们来看看开发人员是如何使用数据库的。 这份调查报告的名字就是:今天开发人...

30350
来自专栏desperate633

第一课 了解sql准备样例表sql初探

首先阅读这本书,必须先了解这本书里sql语句所操作的数据库表。 也就是书附录中的样例表,深入理解这个样例表不仅可以帮助我们设计好的数据库结构,也能打下基础,更...

12920
来自专栏杨建荣的学习笔记

Oracle和MySQL DBA的进阶之路

今天去数据技术嘉年华做了一个主题分享,会场由肖鹏大师主持,我的印象中MySQL中圈子里彦伟和肖鹏真能侃,什么都能聊。下午的场子比预想的人要多,场子里都坐不...

39360
来自专栏沃趣科技

【技术分享】沃趣大牛现身解说,教你分分钟掌握MySQL

导读 7月19日,乐商【IT达摩院】再次迎来了一场技术大牛的分享盛会,本次分享会邀请了来自杭州沃趣科技联合创始人、高级MySQL数据库专家—李春,以《MySQL...

42990
来自专栏马洪彪

SqlServer示例数据库Northwind(一)——实体关系

在学习Spss统计分析、EA画实体关系图、PowerDesigner画数据库模型图等时,苦于找不到一个好的实例。由于实际工作中项目使用的表结构属于公司的商业保密...

44090
来自专栏哲学驱动设计

代码重构之路的艰辛

  我承认,这个标题很沉重。我有幸使用了一个开源的项目作为小范围内的二次开发应用。这个项目其实是挺大的,开源代码仅是其中一部分,在二次开发中我对源代码作了一些改...

18680
来自专栏架构师之路

1分钟了解基于内容的推荐,pm又懂了

前天的《1分钟了解“协同过滤”》,很多同学点了赞,今天接着用通俗的语言说说“基于内容的推荐”,也保证pm弄懂。 什么是基于内容的推荐(Content-based...

39560
来自专栏数据和云

嘉年华专访 | 我有故事,你有酒吗?

潘娟,京东金融高级DBA,主要负责京东金融生产数据库运维及数据库平台、中间件开发工作。多次参与京东金融6.18、11.11大促活动的护航工作。曾负责京东金融数据...

12030
来自专栏牛客网

双非菜鸟的Java实习面试经历..

58040
来自专栏牛客网

京东面经(还有一点点小感想)

一个不成熟男子的标志是他愿意为某种事业英勇地死去,一个成熟男子的标志是他愿意为某种事业卑贱地活着。——J·D·塞林格《麦田里的守望者》

9310

扫码关注云+社区

领取腾讯云代金券