走在专家的路上,每天优化一条SQL

本文讲的走在专家的路上,每天优化一条SQL,为了让大家更好地理解索引的常见和使用,我们拣选了工程师在客户现场做的一些真实的SQL优化,基于真实的业务场景,与大家分享。


image


每天一条SQL优化,帮你走在专家的路上。

SQL文本:

SELECT 'x'
  FROM MD3U.CARD_INFO A, MD3U.PERSON_INFO B
 WHERE GBRQ IS NULL
   AND NVL(KZT, '0') <> '0'
   AND FFDSX = 'F'
   AND A.RYID = B.RYID
   AND ROWNUM <= 300
   AND B.DQJBJGID = '37100501'
   AND KH IS NOT NULL

执行计划如下:


image


执行计划统计信息如下:


image

索引相关信息如下:


image


从上面可以看到,该SQL的总执行时间为336,973,478毫秒(ms)大概93.6小时(h),总执行次数为143,101次,平均一天执行大概13000次,从而可以判定是一个使用非常频繁的SQL查询。

因为执行次数比较多,所以总时间也非常大,单次执行时间大概2.3秒(s)。经下面优化验证从2.3秒改善为0.1秒,总执行时间会从93.6小时减少为0.1*143101/60/60 = 3.97小时左右。而且,与该SQL相似的SQL非常多,从排名中可以看到排名1、3的都与这个SQL相似。

所以只要优化了这个SQL,相似的SQL都可以进行优化。

**优化前,文本执行后的执行计划:

image


**建议创建索引的SQL如下:
CREATE INDEX md3u.KC47$AAZ198_AAC001 ON md3u.
KC47(AAZ198,AAC001) ONLINE;
CREATE INDEX md3u.AZ01$BKB004_AAZ512_AAZ500 ON
md3u.AZ01(AAC001,BKB004,AAZ512,AAZ500,AAZ502) ONLINE;

创建后,文本执行后的执行计划:


image

可以看到最终优化后:

执行时间从原来的1.01秒(s)变为0.1秒(s)
逻辑读从原来的143164变为37854
执行时间上性能提高10倍,逻辑读减少3.7倍。

原文发布时间为:2017-09-25
作者: 云和恩墨
本文来自云栖社区合作伙伴“数据和云”,了解相关信息可以关注“数据和云”微信公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值