前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >走在专家的路上,每天一条SQL优化(3)

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

作者头像
数据和云
发布2018-03-08 11:36:26
4870
发布2018-03-08 11:36:26
举报
文章被收录于专栏:数据和云数据和云

小编寄语:本系列分享的SQL优化实例,并不一定适用于所有相似SQL或所有场景。我们只是介绍一种方法,当你再次遇到类似SQL,可以根据真实场景,选择最适合的方案。另外,有疑问的时候,最好的办法就是测试,动手才能找到最佳答案!

SQL文本如下:

代码语言:javascript
复制
SELECT NVL(SUM(SRE), 0) HRJE
 FROM MD3U.CARD_INCOME A
 WHERE YLGRZHH = '371081110630214389'
 AND DDQCSRH IS NULL
  AND ZDLSH IS NOT NULL
 AND NVL(CGBZ, '0') = '1'
 AND NOTEXISTS (SELECT 'x'
  FROM MD3U.BILL_MID B
 WHERE B.ZDLSH = A.ZDLSH
  AND B.DM = 'hbry'
   AND B.C = '2')
 AND NOTEXISTS (SELECT 'x'
  FROM MD3U.BILL_MID C
 WHERE C.ZDLSH = A.ZDLSH
 AND C.DM = 'hrzh'
 AND C.C = '2');

执行计划如下:

SQL统计信息如下:

索引相关信息如下:

从上面可以看到,该SQL的总执行时间为111,452,436毫秒(ms)大概30.95小时(h),总执行次数为295,420次,平均一天执行26856次,从而可以判定也是一个使用非常频繁的SQL查询。因为执行次数比较多,所以总时间也非常大,但是单次执行时间并不是很长,只有大概0.37秒(s)。这个SQL还可以进行优化。

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

建议创建索引的SQL如下:

CREATE INDEX MD3U.idx_KC20_01 ON MD3U.KC20(AAE072,BKE021,BKE004) ONLINE;

CREATE INDEX MD3u.idx_KZ03_01 ON

MD3U.KZ03(AAZ905,BKE163) GLOBAL ONLINE ;

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

可以看到优化后,执行时间从原来的0.01秒(s)变为0.01秒(s),逻辑读从原来的82变为17,执行时间上性能没有提高,但是逻辑读减少大概4.8多倍。

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

本文分享自 数据和云 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档