日期:2014-05-17  浏览次数:20905 次

解决资料删除慢的原因
现在两表,主表A以及子表B,现在要根据A表里面的ID删除子表B里面资料,子表B里面有639万条数据,删除的资料有1707条数据,子表B中已经建了A表ID的索引,执行语句为
delete   from   B   WHERE   B.A_ID   =ID,现在删除要31s,在网上有查到说要用bulk来做,但这样的改动会比较大,因为以前是用程序来实现删除的,现在要放到数据库端用存储过程来实现,所以看一看各位大侠有没有知道为什么会删除这么慢,有没有地方可以进行设置

------解决方案--------------------
你可以到晚上很少有人用数据库的时候再删除记录!
------解决方案--------------------
如果不考虑恢复数据的话
用truncate 快
------解决方案--------------------
为ID创建的索引中,只包含了一个ID字段吗?
如果是的话,确认没有锁定
------解决方案--------------------
对B表进行一下索引维护后再试试
------解决方案--------------------
delete from B WHERE B.A_ID =ID,这句话一点问题也没有,

不过要31s有点怪,不应该这么慢,看看执行计划,索引是否用上。


------解决方案--------------------
用索引表先存想要删除的ID,然后再用
FORALL I IN 1..index_table_name.count
delete from a where id=index_table_name(i);