博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
走在专家的路上,每天一条SQL优化(2)
阅读量:5870 次
发布时间:2019-06-19

本文共 1173 字,大约阅读时间需要 3 分钟。

image

每天坚持进步一点点,让优秀成为一种习惯。

SQL文本如下:

INSERT INTO BPZONE.EI_ADDITION  (EID,ROOTPIID, ANCESTOREID, CREATETIME)  SELECT E.ID_, E.PROC_INST_ID_, '.' || E.ID_ || '.' ANCESTOREID, SYSDATE    FROM ACTIVITI.ACT_RU_EXECUTION E   WHERE E.ID_ = E.PROC_INST_ID_     AND E.PARENT_ID_ IS NULL     AND E.SUPER_EXEC_ IS NULL     AND NOTEXISTS (SELECT 1 FROM BPZONE.EI_ADDITION B WHERE B.EID = E.ID_);

生成的执行计划如下:

image

SQL统计信息如下:

image

表及索引信息:

image

从上面可以看到,该SQL的总执行时间为63,737,806毫秒(ms)大概17.7小时(h),总执行次数为966次,平均一天执行87次,从而可以判定不是一个使用非常频繁的SQL查询。单次执行时间大概65. 98秒(s)。这个SQL可以进行优化。

优化前,查询部分执行后的执行计划:

image

建议创建索引的SQL如下:

CREATE INDEX ACTIVITI.idx_ACT_RU_EXECUTION_01 ON ACTIVITI.ACT_RU_EXECUTION(ID_,PROC_INST_ID_,PARENT_ID_,SUPER_EXEC_) ONLINE ;

建议SQL中的查询部分改写为如下形式:

SELECT E.ID_, E.PROC_INST_ID_, '.' || E.ID_ || '.' ANCESTOREID, SYSDATE    FROM ACTIVITI.ACT_RU_EXECUTION E   WHERE E.ID_ = E.PROC_INST_ID_     AND E.PARENT_ID_ IS NULL     AND E.SUPER_EXEC_ IS NULL     AND NOTEXISTS (SELECT  /*+ UNNEST HASH_AJ */ 1 FROM BPZONE.EI_ADDITION B WHERE B.EID = E.ID_);

修改后,文本执行后的执行计划:

image

可以看到优化后,执行时间从原来的65.98秒(s)变为0.02秒(s),逻辑读从原来的4177变为57,执行时间上性能提高大概3200多倍,逻辑读减少大概73倍。

原文发布时间为:2017-09-26

作者: 云和恩墨
本文来自云栖社区合作伙伴“数据和云”,了解相关信息可以关注“数据和云”微信公众号

转载地址:http://sjanx.baihongyu.com/

你可能感兴趣的文章
各个JSON技术的比较(Jackson,Gson,Fastjson)的对比
查看>>
运行PHP程序时报php_exif.dll未加载
查看>>
第五次作业
查看>>
郎朗操刀古典音乐融入新科技游戏
查看>>
富士康计划将工厂迁往内地 深圳变身工程园区
查看>>
Maven引入本地依赖Jar到可执行Jar包中
查看>>
sql_recover_2017/11/1
查看>>
[转载] Discovery——看穿读心术 01 微表情解读
查看>>
解决hash冲突的方法
查看>>
【转】一步一步学Linq to sql(三):增删改
查看>>
Java并发(一):多线程干货总结
查看>>
SCOI2019酱油记
查看>>
noip车站分级 拓扑排序
查看>>
简单回溯,最少步数
查看>>
ckeditor4.7配置图片上传
查看>>
数据库封装函数
查看>>
元-博客园博客管理思路整合
查看>>
界面出现卡死状态右滑恢复正常
查看>>
线程处理的具体应用情况
查看>>
【ZZ】各类程序开发语言概述 | 菜鸟教程
查看>>