首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

优化下SQL解决方法

2012-03-11 
优化下SQLSQL codedelete A a where not exists (select 1 from B dwhere a.id_nod.id_no and d.use_numb

优化下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;

热点排行