sql删除大数据量表中的多条记录

delete from t_repository where id in(2360,2362,3323) and categoryid=123
由于这个表有10几万条数据,删除时很慢。用in的话全表扫描会拖慢速度。有没有更好的方法。
oracle的数据库。我用过执行计划了。无论in 还是or 都是全表扫描

改成这样:
delete from t_repository where (id=2360 or id=2362 or id=3323) and categoryid=123

关键是[ID]字段或者[categoryid]要有索引,否则再怎么写条件,都是全表扫描的。

如果对这两个字段都没有索引的话,那我建议,还是先建一个再来删除吧,虽然建立索引一样会花费大量时间(基本上会与现在没有索引直接去删除所花费的时间相当),但对以后类似的删除与查询操作来说,会节约更多时间的。

GoodLuck!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-26
分三次咯
第2个回答  2010-04-26
如果ID或者categoryid有索引,就应该会用到索引了.所以全表扫描倒不一定,可以看一下执行计划.如果不太了解索引结构的话,sql server2005有推荐的优化方案.可以按照建议的优化方式进行优化.
相似回答