DELETE 删除性能优化

П╃вMe²º¹³  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?
П╃вMe²º¹³  23:11:30
对啊~
不然用存储过程?
落落  23:11:47
嗯 用存储过程
用ROWID 去删
先把要删除的ROWID 查出来
然后 删除
或者说
你先 T 和A join
П╃вMe²º¹³  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 抓出来
П╃вMe²º¹³  23:12:28
这样吗?
落落  23:12:28

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

激动啊~
落落  23:15:45
呵呵 
有SQL优化问题,性能优化问题,欢迎加入 220761024 群讨论
原文地址:https://www.cnblogs.com/hehe520/p/6330543.html