delete a
from a,b
where a.Code+a.bak=b.Code+b.bak and a.rtime=b.rtime
这个sql语句是用来删除a表中包含的b表的记录。
现在的问题是速度太慢!
如果是查询:
select * from a,b
where a.Code+a.bak=b.Code+b.bak and a.rtime=b.rtime 只需要11s
而执行上面的删除却需要将近10分钟!
实在是无法忍受,请大家多多帮忙!不胜感激!
...全文
1127打赏收藏
头痛的删除优化问题!!
delete a from a,b where a.Code+a.bak=b.Code+b.bak and a.rtime=b.rtime 这个sql语句是用来删除a表中包含的b表的记录。 现在的问题是速度太慢! 如果是查询: select * from a,b where a.Code+a.bak=b.Code+b.bak and a.rtime=b.rtime 只需要11s 而执行上面的删除却需要将近10分钟! 实在是无法忍受,请大家多多帮忙!不胜感激!
1。把数据库恢复模型改为‘简单’,减少日志写入
2。暂时删除其他索引,只在两个表的code,bak,rtime
上建立一个覆盖索引。
3。你的删除可以改为:
delete a from a,b
where a.Code=b.Code and a.bak=b.bak and a.rtime=b.rtime
--注意在where条件中最好不要进行计算后比较