日期:2014-05-16  浏览次数:20462 次

DELETE 删除性能优化
П╃вMe2o13  23:08:57
在吗?

这语句你看有得救吗?
delete from i_br_all_user_real t
where exists (select 1 from i_br_card_return a 
where t.imsi_no = a.imsi_no and t.oper_date<=to_date(a.return_date,'YYYYMMDDHH24MISS'));
落落  23:10:54
有救
必须是SQL?
П╃вMe2o13  23:11:30
对啊~
不然用存储过程?
落落  23:11:47
嗯 用存储过程
用ROWID 去删
先把要删除的ROWID 查出来
然后 删除
或者说
你先 T 和A join
П╃вMe2o13  23:12:22
delete from i_br_all_user_real where rowid in (
select a.rowid from i_br_all_user_real a,i_br_card_return b
where a.imsi_no = b.imsi_no
and a.oper_date<=to_date(b.return_date,'YYYYMMDDHH24MISS'))
落落  23:12:26
然后 把A 的 ROWID 抓出来
П╃вMe2o13  23:12:28
这样吗?
落落  23:12:28

П╃вMe2o13  23:12:39
我没试过这样跑~
落落  23:12:46
跑一下吧
П╃вMe2o13  23:12:53
好的 我试试看~
落落  23:12:55
对了 你要先看要删除的 行数多大
如果行数很大
你要先把A 的索引都给禁止了
П╃вMe2o13  23:13:31
A表很大哦~
落落  23:13:51
那 你试一试 ROWID 吧
П╃вMe2o13  23:14:02
嗯 好的
П╃вMe2o13  23:15:32

激动啊~
落落  23:15:45
呵呵 
来 我的SQL优化培训课程吧