读书人

优化下SQL解决方法

发布时间: 2012-03-11 18:15:38 作者: rapoo

优化下SQL

SQL code
delete A a where not exists (select 1 from B d     where a.id_no=d.id_no and d.use_number =1)


怎么让它执行的效率提高阿????
A表和B表都很大,大概都4千万的样子,A,B的ID_NO 都有索引,上面执行花了四个小时还是没跑出来...

请教了........

[解决办法]
这个语句已经是最好的语法了,执行速度慢那是数据太大
[解决办法]
整个语句的意思:
从A表中删除记录,条件是id_no在B表中不存在并且B表的number=1的记录

not exists表示在B表中不存在的id_no


[解决办法]
要删除的数据量估计多大。

最好再加入一个关键性的条件,能够分段删除,及时递交。
[解决办法]
分段删除,定时提交是个解决的办法

楼主可以分析下执行计划,看看哪一步耗时最长,再在上面想点办法
还有,能否把硬盘读写改为并行?
[解决办法]
To flush DB buffer cache (DB blocks):
10g
alter system flush buffer_cache;
9i
alter session set events = 'immediate trace name flush_cache';

To flush shared pool (parsed SQls/PL/SQLs:

alter system flush shared_pool;

读书人网 >oracle

热点推荐