首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >69-性能优化的核心在SQL,SQL优化的核心是写法

69-性能优化的核心在SQL,SQL优化的核心是写法

作者头像
老虎刘
发布于 2022-06-22 10:19:32
发布于 2022-06-22 10:19:32
3130
举报

这个case是前几天微信技术讨论群里面一个北京站培训的学员提出来的,原SQL:

SQL执行计划如下:

从上面执行计划我们能知道SQL涉及两个表的大小。同时还能知道last_upd字段的谓词条件过滤性很好。实际执行时间接近9.55秒,想用索引用不上。

我试着按照两个表的last_upd字段都有索引的思路,对该SQL做了改写。改写的依据就是要充分利用谓词条件的选择性,合理的使用索引,而原写法是无法使用索引的,改写后的SQL代码如下(这个改写还是有一定难度的,算是中高级的改写):

改写后的执行计划:

执行时间已经降到0.88秒,如果在B表的last_upd字段再创建一个索引,那么这个SQL的最终执行时间应该在10毫秒左右(改写前接近10秒),效率是改写前的1000倍左右,同时,对资源(CPU、IO、内存)的消耗也降低了很多。

总结:

SQL的写法很重要,很多系统随着数据量的增长越来越慢,大部分跟SQL写法不佳有关(如果DBA不能识别这些低效SQL写法,就会背上运维水平差的锅)。如果SQL写法满足基本的规则,同时创建了合适的索引,就不会因为数据量的增长导致明显的性能下降。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老虎刘谈oracle性能优化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
106-跟专家学习SQL优化-2
这是墨天轮上看到的一篇优化文章. 这篇文章以图为主,没有任何原理上的解释,大家看看你们能不能根据这些截图, 得出优化建议.
老虎刘
2023/09/01
2670
106-跟专家学习SQL优化-2
【性能优化】一个执行计划异常变更的案例(上)
作者简介: 刘晨,网名bisal,Oracle 10g/11g OCM,并国内首批Oracle YEP成员, 博客:blog.itpub.net/bisal 案例介绍 今天快下班的时候,几位兄弟来聊一
数据和云
2018/03/07
1.3K0
【性能优化】一个执行计划异常变更的案例(上)
86-给参加<SQL写法与改写培训>的学员补充一个二手案例
最近看到一篇关于SQL改写的文章,标题为基于SQL特征的改写, 原文花了很大的篇幅做了详细的讲解, 拜读之后,感觉可能还有优化空间,我把我的分析与改写方法介绍一下, 供大家参考.
老虎刘
2022/06/22
2160
86-给参加<SQL写法与改写培训>的学员补充一个二手案例
94-SQL优化案例一则(用到的写法经常是被嫌弃的)
客户生产系统上的SQL, 表越来越大, 执行时间越来越长, 不过只要能跑出结果, 只要不是慢到无法接受, 用户基本上都忍了.
老虎刘
2022/06/22
3390
94-SQL优化案例一则(用到的写法经常是被嫌弃的)
极致之处,精彩无限 - 优化了一半的SQL
编辑手记:RWP(Real World Performance)团队是全球最优秀的性能优化团队,他们的目标在于系统性能千倍的提升。感谢刘永甫专家的授权,他从RWP团队转入售后,多年专注于性能优化。我们
数据和云
2018/03/07
7080
极致之处,精彩无限 - 优化了一半的SQL
性能优化, 关键还是在SQL
很多系统上线后, 性能问题开发就基本上不管了 , 业务越来越慢的责任都压在DBA身上,而大部分DBA对SQL优化没有深入的研究, 就只能把希望寄托在硬件的改善上.
老虎刘
2022/06/27
4030
性能优化, 关键还是在SQL
105-跟专家学习SQL优化-1
网上有很多SQL优化的案例, 我本人对这方面特别感兴趣,今天就带着大家一起来学习一下专家是如何优化SQL的.
老虎刘
2023/09/01
2540
105-跟专家学习SQL优化-1
8个SQL错误写法,你中枪了几个
分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。
框架师
2019/09/19
9140
8个SQL错误写法,你中枪了几个
72-最近一次现场生产系统优化的成果与开发建议
上周给南京某客户一个重要业务系统的数据库做优化,能实施的马上做了实施,优化前后性能对比非常明显,系统最为严重的IO负载过重问题基本得到解决:优化前一天的物理读是48亿次,优化后是15亿次,效果那是刚刚的,业务处理效率明显改善,磁盘的寿命也会有大幅提升。 这些还只是优化建议的一部分。
老虎刘
2022/06/22
4150
数据分布决定SQL写法
这是2016年8月份上海MOORACLE大会上陈宏义老师(老K)分享的一个案例,将一个merge SQL,通过改写成plsql的方式,大大提高了执行效率。 老虎刘在看到这个案例的时候,开始没有注意到执行计划里面显示的各表实际记录数,不认为plsql的改写方式比分析函数的写法更高效,还与陈老师有过几次邮件讨论,直到后来仔细查看了执行计划。
老虎刘
2022/06/22
4590
数据分布决定SQL写法
开发人员掌握了这个技术,SQL效率会有几百倍的性能提升
完成相同业务逻辑的SQL,写法不同,执行效率可能会有几百上千倍的差距,今天我们通过几个案例来说明一下:
老虎刘
2022/06/22
3020
开发人员掌握了这个技术,SQL效率会有几百倍的性能提升
高级SQL优化之过滤条件下推优化(FPPD)
本篇属于高级SQL优化系专题中的一篇,高级SQL优化系列专题介绍PawSQL优化引擎以及Oracle等数据库优化器的查询优化算法原理及优化案例,欢迎大家订阅。
PawSQL
2024/08/20
2210
高级SQL优化之过滤条件下推优化(FPPD)
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。
JAVA日知录
2019/11/06
1.8K0
数据库优化 - SQL优化
MySQL中把一个执行时间为35秒SQL优化到2.5秒的例子
客户抱怨一个SQL执行时间很慢,测试了一下,这个SQL的执行时间为35秒,查询执行计划,没有用到索引。
姚远OracleACE
2024/02/06
3610
MySQL中把一个执行时间为35秒SQL优化到2.5秒的例子
[MySQL] SQL优化案例1
原始SQL如下,MySQL版本5.7.19。执行时间1小时以上无法出结果 SELECT * FROM ( SELECT a.*, e.PAGY_STAT, b.brname, c.SETL_TYPE, c.SETL_SYMBOL, c.SETL_CYCLE, c.spec_Setl_Day, c.SETL_ACCT_NAME,
夜半钟鸣
2021/02/25
3890
100-为什么数据库运行越来越慢? 了解一下<SQL诊所>服务
很多数据库会随着时间的增长越来越慢, 今天通过一个小案例说明一下. 文章结尾可能有你需要的东西.
老虎刘
2023/09/01
2870
100-为什么数据库运行越来越慢?  了解一下<SQL诊所>服务
78-生产系统不改代码解决SQL性能问题的几种方法
数据库性能很大一部分跟SQL写法有关, 有些SQL是必须改代码才能优化的, 如果不能改代码, 需要删历史记录,回收空间,让表始终保持相对较小,才能消耗较少的资源,得到能够接受的响应时间.如前公众号文章所述: 必须通过改写SQL才能提升性能的一些情况 (列举了10个需要改写的SQL).
老虎刘
2022/06/22
4850
78-生产系统不改代码解决SQL性能问题的几种方法
8种最坑的SQL错误用法,第一个就很坑?
作者:程序员追风 链接:https://juejin.im/post/5dd15451e51d453b3d3d4329
Python数据科学
2019/11/23
8020
用JOIN替代子查询的查询性能优化
在数据库查询优化的实践中,子查询与JOIN的选择往往是开发者需要面对的关键抉择。本文将通过原理分析、执行计划对比和实战案例,揭示如何通过合理的JOIN改写策略提升查询性能。
Jimaks
2025/06/10
1550
用JOIN替代子查询的查询性能优化
mysql如何优化慢查询_慢sql优化思路
在公司实习的时候,导师分配了SQL慢查询优化的任务,任务是这样的:每周从平台中导出生产数据库的慢查询文件进行分析。进行SQL优化的手段也主要是修改SQL写法,或者新增索引。
全栈程序员站长
2022/11/04
4.5K0
mysql如何优化慢查询_慢sql优化思路
推荐阅读
相关推荐
106-跟专家学习SQL优化-2
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档