各个表的数据量:

sys_file_convert_queue 65989
sys_att_file 73061
sys_att_main 84405
sys_att_rtf_data 1507

优化前,执行时间大概2分多钟
SQL> set autotrace traceonly
SQL> delete from sys_file_convert_queue
where ((fd_file_id is not null or fd_file_id <> '') and
fd_file_id not in (select fd_id from sys_att_file))
or fd_attmain_id not in
(select fd_id
from sys_att_main
union all
select fd_id from sys_att_rtf_data); rows deleted. Execution Plan
----------------------------------------------------------
Plan hash value: --------------------------------------------------------------------------------
--------------- | Id | Operation | Name | Rows | Bytes | Cost (%C
PU)| Time | --------------------------------------------------------------------------------
--------------- | | DELETE STATEMENT | | | 9879K| 125K
()| :: | | | DELETE | SYS_FILE_CONVERT_QUEUE | | |
| | |* | FILTER | | | |
| | | | TABLE ACCESS FULL | SYS_FILE_CONVERT_QUEUE | | 9879K|
()| :: | | | UNION-ALL | | | |
| | |* | INDEX UNIQUE SCAN| SYS_C0015191 | | |
()| :: | |* | INDEX UNIQUE SCAN| SYS_C0015192 | | |
()| :: | |* | INDEX FULL SCAN | SYS_C0014984 | | |
()| :: | --------------------------------------------------------------------------------
--------------- Predicate Information (identified by operation id):
--------------------------------------------------- - filter( NOT EXISTS ( (SELECT "FD_ID" FROM "SYS_ATT_MAIN" "SYS_ATT_MAIN" W
HERE "FD_ID"=:B1) UNION ALL (SELECT "FD_ID" FROM "SYS_ATT_RTF_DATA" "S
YS_ATT_RTF_DATA" WHERE "FD_ID"=:B2)) OR ("FD_FILE_ID" IS NOT NULL OR "FD_FILE_ID"<>
'') AND NOT EXISTS (SELECT FROM "SYS_ATT_FILE" "SYS_ATT_FILE" WHERE LNNVL("FD_ID"<>
:B3))) - access("FD_ID"=:B1)
- access("FD_ID"=:B1)
- filter(LNNVL("FD_ID"<>:B1)) Statistics
----------------------------------------------------------
recursive calls
db block gets
consistent gets
physical reads
redo size
bytes sent via SQL*Net to client
bytes received via SQL*Net from client
SQL*Net roundtrips to/from client
sorts (memory)
sorts (disk)
rows processed
优化后,执行时间2秒不到
SQL> delete from sys_file_convert_queue a
where not exists
(select fd_id from sys_att_file b where a.fd_file_id = b.fd_id)
or not exists (select
from (select fd_id
from sys_att_main
union all
select fd_id from sys_att_rtf_data) c
where a.fd_attmain_id = c.fd_id)
; rows deleted. Execution Plan
----------------------------------------------------------
Plan hash value: --------------------------------------------------------------------------------
---------------- | Id | Operation | Name | Rows | Bytes | Cost (%
CPU)| Time | --------------------------------------------------------------------------------
---------------- | | DELETE STATEMENT | | | 9879K|
()| :: | | | DELETE | SYS_FILE_CONVERT_QUEUE | | |
| | |* | FILTER | | | |
| | | | TABLE ACCESS FULL | SYS_FILE_CONVERT_QUEUE | | 9879K|
()| :: | |* | INDEX UNIQUE SCAN | SYS_C0014984 | | |
()| :: | | | VIEW | | | |
()| :: | | | UNION-ALL | | | |
| | |* | INDEX UNIQUE SCAN| SYS_C0015191 | | |
()| :: | |* | INDEX UNIQUE SCAN| SYS_C0015192 | | |
()| :: | --------------------------------------------------------------------------------
---------------- Predicate Information (identified by operation id):
--------------------------------------------------- - filter( NOT EXISTS (SELECT FROM "SYS_ATT_FILE" "B" WHERE "B"."FD_ID"=:B
) OR NOT EXISTS (SELECT FROM ( (SELECT "FD_ID" "FD_ID" FROM "SYS_ATT
_MAIN" "SYS_ATT_MAIN" WHERE "FD_ID"=:B2) UNION ALL (SELECT "FD_ID" "FD_ID" FROM "SYS_AT
T_RTF_DATA" "SYS_ATT_RTF_DATA" WHERE "FD_ID"=:B3)) "C"))
- access("B"."FD_ID"=:B1)
- access("FD_ID"=:B1)
- access("FD_ID"=:B1) Statistics
----------------------------------------------------------
recursive calls
db block gets
consistent gets
physical reads
redo size
bytes sent via SQL*Net to client
bytes received via SQL*Net from client
SQL*Net roundtrips to/from client
sorts (memory)
sorts (disk)
rows processed

ORACLE数据库SQL优化 not in 与not exits的更多相关文章

  1. Oracle数据库SQL优化

    SQL优化的最终目的是用户体验-在最短时间内让用户在页面数据.因此,执行时间是SQL优化的重要指标.在SQL查询中,I/O操作最占系统性能的.I/O操作量越大,时间越久.减少I/O操作量是优化SQL的 ...

  2. 基于Oracle的SQL优化(社区万众期待 数据库优化扛鼎巨著)

    基于Oracle的SQL优化(社区万众期待数据库优化扛鼎巨著) 崔华 编   ISBN 978-7-121-21758-6 2014年1月出版 定价:128.00元 856页 16开 编辑推荐 本土O ...

  3. Oracle 数据库SQL性能查看

    作为一个开发/测试人员,或多或少都得和数据库打交道,而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据,那么对sql性能的掌控又成了我们工作中一件非常重要的工作.下面简单介绍下一些查看 ...

  4. 基于oracle的sql优化

    [基于oracle的sql优化] 基于oracle的sql优化 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 一.编写初衷描述 在应有系统开发初期,由于数据库 ...

  5. Oracle之SQL优化专题01-查看SQL执行计划的方法

    在我2014年总结的"SQL Tuning 基础概述"中,其实已经介绍了一些查看SQL执行计划的方法,但是不够系统和全面,所以本次SQL优化专题,就首先要系统的介绍一下查看SQL执 ...

  6. 转://从一条巨慢SQL看基于Oracle的SQL优化

    http://mp.weixin.qq.com/s/DkIPwbDKIjH2FMN13GkT4w 本次分享的内容是基于Oracle的SQL优化,以一条巨慢的SQL为例,从快速解读SQL执行计划.如何从 ...

  7. 从一条巨慢SQL看基于Oracle的SQL优化(重磅彩蛋+PPT)

    本文根据DBAplus社群第110期线上分享整理而成,文末还有好书送哦~ 讲师介绍 丁俊 新炬网络首席性能优化专家 SQL审核产品经理 DBAplus社群联合发起人.<剑破冰山-Oracle开发 ...

  8. 数据库sql优化总结之5--数据库SQL优化大总结

    数据库SQL优化大总结 小编最近几天一直未出新技术点,是因为小编在忙着总结整理数据库的一些优化方案,特此奉上,优化总结较多,建议分段去消化,一口吃不成pang(胖)纸 一.百万级数据库优化方案 1.对 ...

  9. 我的mysql数据库sql优化原则

    原文 我的mysql数据库sql优化原则 一.前提 这里的原则 只是针对mysql数据库,其他的数据库 某些是殊途同归,某些还是存在差异.我总结的也是mysql普遍的规则,对于某些特殊情况得特殊对待. ...

随机推荐

  1. javaScript中关于字符串的操作函数和方法

    1.字符串转换 toString():可以将任何类型的数据都转换为字符串 var num= 19; //19 var myStr = num.toString(); //"19" ...

  2. ip 淘宝ip库 精简版

    <?php header('Content-type: text/html; charset=utf-8'); //根据ip获取城市.网络运营商等信息 function findCityByIp ...

  3. Javascript闭包入门(译文)

    前言 总括 :这篇文章使用有效的javascript代码向程序员们解释了闭包,大牛和功能型程序员请自行忽略. 译者 :文章写在2006年,可直到翻译的21小时之前作者还在完善这篇文章,在Stackov ...

  4. Linux的软件安装(JDK安装,Mysql安装,Tomcat安装)

    1.JDK安装 注意:rpm与软件相关命令 相当于window下的软件助手 管理软件 步骤: 1)查看当前Linux系统是否已经安装java 输入 rpm -qa | grep java ps:博主这 ...

  5. 常用SQL笔记总结

    DDL(data definition language)创建和管理表 1.创建表 1.直接创建 例如: create table emp( name varchar(20), salary int ...

  6. APIs

    应用程序接口(application programe interfaces)

  7. mysql查看表大小

    mysql查看表大小 一:命令 show table status like 'table_name'\G; mysql> show table status like 'x'\G; . row ...

  8. python实现端口扫描器/DoS/DDoS

    整理github,梳理下Python小工具.以下是python实现的DoS/DDoS/端口扫描器(github). 一.DoS SYN Flood是当前最流行的DoS(拒绝服务攻击)与DdoS(分布式 ...

  9. Spring 数据库连接(Connection)绑定线程(Thread)的实现

    最近在看spring事务的时候在想一个问题:spring中的很多bean都是单例的,是非状态的,而数据库连接是一种有状态的对象,所以spring一定在创建出connection之后在threadloc ...

  10. linux_目录结构

    目录的作用是什么? 1. 归档和分类 2. 区分同名文件 什么是FHS? 目录层次标准,linux目录规范标准 linux系统目录有哪些特点? 1. 逻辑上所有目录都在 / 目录下,根目录是所有目录的 ...