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

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

SQL文本如下:

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多倍。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-09-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闵开慧

通过多种方式将数据导入hive表

hive官方手册 http://slaytanic.blog.51cto.com/2057708/939950 通过多种方式将数据导入hive表 1.通过外部...

3437
来自专栏PHP技术

MySQL 数据库锁定机制

1. MySQL 锁定机制简介 各存储引擎使用三种类型锁定机制 行级锁定(row-level) 表级锁定(table-level) 页级锁定(page...

38116
来自专栏L宝宝聊IT

SQL server 数据库的索引和视图

1295
来自专栏杨建荣的学习笔记

一个MySQL死锁问题的复现

很久之前有一个同事问我一个关于死锁的问题,一直在拖这个事情,总算找了空来看看。 这个环境的事务隔离级别是RR,仔细看了下问题描述和背景,发现还真不是一...

3559
来自专栏文渊之博

比较列存储索引与行索引

原因:     之前已经写过一篇关于列存储索引的简介https://cloud.tencent.com/developer/article/1032222,很粗...

1876
来自专栏乐沙弥的世界

临时表空间的管理与受损恢复

      Oracle 临时表空间是Oracle数据库的重要组成部分,尽管该部分并没有cont体系结构上得以展现,但其重要地位也是不容忽视的。尤其是 对于大...

923
来自专栏Python

Innodb与Myisam引擎的区别与应用场景

1.区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理); (2)锁机制不同: MyISAM是表级锁,...

3417
来自专栏技术博文

从MyISAM转到InnoDB需要注意什么

转自 MySql中文网 http://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=200910426&idx=1...

33714
来自专栏运维小白

Linux基础(day62)

不停库不锁表在线主从配置 mysql主从常见问题 mysql主从延迟 深入探究主从延迟 mysql主从不同步如何做 mysql ...

1837
来自专栏杨建荣的学习笔记

分区表放入keep pool,recycle pool的问题及解析(34天)

因为生产环境的性能瓶颈,经过诊断,给出的结论是需要把几个表和索引放入keep pool,几个索引放入recycle pool. 其实放入keep pool 确实...

2957

扫码关注云+社区