有数据库就有SQL,而SQL又因其灵活、复杂,而让众多应用系统饱受性能之苦。
众所周知,数据库应用是IT系统极其关键的核心组成部分,而SQL 是数据库唯一的交互语言,SQL语句实现难度不大,但是SQL 语句优化却比较复杂,做好SQL优化需要掌握数据库体系结构、表和索引设计、高效SQL写法、高级SQL语法、多种优化工具等知识,甚至还得分析业务特点,以及了解优化器的缺点。
只有建立SQL优化方法论体系,才能够迅速找到最适合的方法来优化SQL,从而解决由SQL引发的性能问题。助人为乐的互联网雷锋(小编我)帮大家找到了这份阿里P8大佬纯手码的《收获,不止SQL优化 抓住SQL的本质》免费分享给大家,来帮助大家学习提升SQL优化能力!
限于文章篇幅原因,只能以截图的形式展示出来,有需要的小伙伴可以文末获取↓↓↓
SQL 优化是一个复杂的工程,首先要讲究从整体到局部。
首先,我们学习关于数据库整体优化都有哪些性能工具。接着分析这些工具的特点,并结合案例进行探索。
首先说明调优时间都花在哪儿,接下来分析如何缩短,然后结合案例来巩固知识。
执行计划是什么,如何读懂执行计划,读懂执行计划对我们又有什么用?面对这些疑问,我们从执行计划分析概述、读懂执行计划的关键、从案例中辨别低效SOL、总结思考这四部分
接下来将教会大家如何真正读懂执行计划
我们在接下来的7章里大部分内容都是教大家如何不改写SQL完成SQL优化。
本章会较为简要地给大家介绍一下体系结构知识,然后描述体系结构和SQL优化的关系。最后通过系列扩展的相关优化案例来拓宽我们的视野,从而使我们更深入地了解体系结构的原理。
逻辑结构与 SQL 优化之间的关系是大部分人容易忽略的
本章我们先从简单的逻辑结构知识开始介绍,接下来对所有可能和SQL优化有关的逻辑结构的细节做进一步的描述。
如果我们只是站在表的特性上来研究,显然是不够的。我们还要紧抓业务,站在业务的层面来思考表设计,这才是最高境界。
接下来我们从表设计知识、表设计与SQL 优化、相关案例和总结4个方面展开本章的学习。
索引是SQL优化使用频度最高的优化武器。
本章我们先从索引的知识要点入手,得出索引的结构后我们开始尝试让索引的原理和SOL结合起来。
任何事物都有它的两面性,索引也不例外。
本章我们先简要综述一下索引的不足之处有哪些,接下来详细阐述,随后一起和大家探索各种工作中的案例。
除了普通索引,还有一些比较特殊的索引, 比如位图索引、函数索引、反向键索引和全文索引。它们的结构很特殊,应用的场景也比较特殊,如果我们能巧妙地将这类索引的特性和业务场景结合起来,在SQL优化上将起到意想不到的效果。
本章还是先从其他索引的总体概述开始讲述,接着进一步通过各种试验 了解特性,然后进入案例实战体会环节,最后总结。
本章我们将了解 Nested Loops Join、 Hash Join、 Merge Sort Join这三大表连接类型及表连接的知识要点。还将通过研究具体的优化案例来加深印象
SQL优化的本质就是减少访问路径。
在很多场景下,我们必须要完成一些等价改写,比如case when 改造、rownum 分页改写,等等。除了减少访问路径外,还要注意避免外因的影响,比如,一些执行计划不稳定,所在环境的资源不足,等等,这些也是我们需要注意的。
如果能用集合的写法来完成PL/SQL的优化改造,优化效果会好得多
集合的优化是本章的重点内容。同时还将介绍定义类型的优化、动态SQL的优化和一些其他相关扩展案例。
现在我们开始学习高级SQL让性能提升的方法....
这里说的高级SQL,只是一种说法, 大概就是一些 看起来有些不寻常的特殊SQL,比如insert all 语句、with子句、merge 等。这些SQL 有一个共同的特点,就是它们都在内部被优化过了,可以通过比较简单、单步骤的语法来实现复杂和多步骤的功能,同时在性能上还能有不少提升。
了解需求, 理清业务关系
总结起来就是,你要确保具备等价改造SQL的意识和本领,然后再大胆结合业务,把握真正的需求,完成优化改造。
现在的互联网时代,到处都充斥着虚假错误的信息
SQL优化也不例外,网络上很多所谓的优化宝典等描述的建议都是错误的或者是过时的,你信吗?如果不信, 请看随后的关于SQL优化的各种谣传。都是有脚本有真相哦。
限于文章篇幅原因,就展示到这里了,有需要的小伙伴可以查看下方名片↓↓↓
SQL 优化不只是一门技术,更是一门艺术!将基于实战的优化方法论融合在美丽的思维导图里,我们看到的,是优化之美!