`
ruilinruirui
  • 浏览: 1050356 次
文章分类
社区版块
存档分类
最新评论

一个超超超烂SQL的优化

 
阅读更多

最近遇到一个超超超烂的SQL,由于SQL涉及某某税务局的数据,表名字是经过处理的。

原始SQL如下:

不用看执行计划就知道,表test_v会被扫描多次,所以这个SQL必须改写。如何改写这个SQL呢?请看下面分析:

首先,这个SQL语句是拼出来的,我们可以把复杂的问题简单化,所以我先看这个SQL:

执行计划如下:

上面的SQL语句会返回1956行,根据执行计划可以看到它进行的是filter操作,讲上面的SQL改写,初步改写如下:

改写之后,SQL只返回了20条数据,但是原始SQL要返回1956条数据,问题出在哪里呢? 问题在于,第一个SQL是filter,它是过滤,并且是count过滤

而第二个SQL是等值jion,第一个SQL里面的count 不管你过滤成功与否,都会返回数据,过滤失败,count=0 即可,所以对第二个SQL应该用 left join 于是SQL 更改如下:

这样改写之后,返回记录条数是对了,但是SQL逻辑有点点改变,第一个SQL是过滤的,count()如果不匹配会返回0,但是第二个SQL是 join的,如果不匹配,会返回1



所以SQL需要改写如下:

改写完了一个,后面的就简单了,所以整体的SQL可以改写如下:

上面的SQL等价于

由于原始SQL要去掉 slzl <>0 所以再包装一下


原始SQL的执行计划 以及 更改后的执行计划对比:

原始SQL需要消耗33261个逻辑读,扫描TEST_V表8次,更改之后的SQL

逻辑读降低到62,表TEST_V只扫描1次,其实这个SQL只是一个汇总的SQL,稍微有点开发常识的人都知道,最开始写SQL的那个人绝对是在乱写SQL。SQL的优化到这里还没完,

因为我们已经知道这个SQL的目的其实就是汇总,所以直接抛弃刚才的优化思路,直接重写SQL如下:


有时候开发人员,为了完成任务,他才不管你SQL写得好不好呢,能完成功能就行了,相信各位DBA深有体会。




分享到:
评论

相关推荐

    SQL优化 SQL优化软件 SQL优化工具

    SQL优化 SQL优化软件 SQL优化工具 很好用的工具,可以分析优化TSQL语句,oracle数据库语句优化工具

    sql优化sql优化sql优化sql优化sql优化

    sql优化sql优化sql优化sql优化

    收获不止SQL优化

    第1章 全局在胸——用工具对SQL整体优化 1 1.1 都有哪些性能工具 1 1.1.1 不同调优场景分析 2 1.1.2 不同场景对应工具 2 1.2 整体性能工具的要点 4 1.2.1 五大性能报告的获取 5 1.2.2 五大报告关注的要点 10 ...

    海量数据优化查询SQL

    海量数据 优化 SQL海量数据 优化 SQL海量数据 优化 SQL海量数据 优化 SQL海量数据 优化 SQL海量数据 优化 SQL海量数据 优化 SQL海量数据 优化 SQL海量数据 优化 SQL海量数据 优化 SQL海量数据 优化 SQL海量数据 优化...

    收获,不止SQL优化--(抓住SQL的本质) .pdf

    , 然而,SQL虽然实现简单可乐,却极易引发性能问题,那时广大SQL使用人员可要“愁”就一个字,心碎无数次了。, 缘何有性能问题?原因也一字概括:“量”。当系统数据量、并发访问量上去后,不良SQL就会拖跨整个系统...

    一款来自国外小哥研发的超超超超好用的Sql处理工具!

    SQL 文件处理工具是一个功能强大的工具,可用于各种任务。 例如,您可以使用它来: 从各种来源导入数据,包括 CSV 文件、文本文件和 XML 文件。 将数据导出为多种格式,包括 CSV 文件、文本文件和 XML 文件。 清理...

    sql优化的几种方法

    sql优化的几种方法sql优化的几种方法sql优化的几种方法sql优化的几种方法sql优化的几种方法

    基于Oracle的SQL优化2

    基于Oracle的SQL优化

    SQL Server SQL优化

    SQL Server SQL优化

    Oracle 高性能SQL引擎剖析SQL优化与调优机制详解

    Oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能的一个重要因素就是SQL性能问题。本书是作者十年磨一剑的成果之一,深入分析与解剖OracleSQL优化与调优技术,主要内容包括: 第一篇“执行计划”...

    SQL优化 SQL 优化

    SQL 优化SQL 优化SQL 优化SQL 优化SQL 优化SQL 优化SQL 优化SQL 优化SQL 优化SQL 优化SQL 优化SQL 优化

    Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解 (黄玮) 高清PDF扫描版

    oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能的一个重要因素就是sql性能问题。本书是作者十年磨一剑的成果之一,深入分析与解剖oracle sql优化与调优技术,主要内容包括: 第一篇“执行计划...

    mysql数据库sql优化

    1. SQL优化 1 1.1. 优化实战 1 1.1.1. 策略1.尽量全值匹配 1 1.1.2. 策略2.最佳左前缀法则 2 1.1.3. 策略3.不在索引列上做任何操作 2 1.1.4. 策略4.范围条件放最后 3 1.1.5. 策略5.覆盖索引尽量用 3 1.1.6. 策略6.不...

    数据库面试题索引sql优化

    数据库面试题索引sql优化数据库面试题索引sql优化数据库面试题索引sql优化数据库面试题索引sql优化数据库面试题索引sql优化数据库面试题索引sql优化数据库面试题索引sql优化数据库面试题索引sql优化数据库面试题索引...

    基于案例学习SQL优化

    练数成金大神分享课程,DBA方向值得学习,1. 缺乏对讹传的辨知力2. 不具备少做事的意识3. 不会依据场景选技术4. 未考虑将需求最小化5. 忽略SQL改造等价性6. 不识需求乃顶级优化

    Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解

    Oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能的一个重要因素就是SQL性能问题。本书是作者十年磨一剑的成果之一,深入分析与解剖Oracle SQL优化与调优技术,主要内容包括: 第一篇“执行计划”...

    基于Oracle的SQL优化1

    基于Oracle的SQL优化

    SQL优化介绍 SQL优化介绍

    SQL优化介绍 SQL优化介绍 SQL优化介绍

Global site tag (gtag.js) - Google Analytics