我有一个超过3000000个条目的表,我需要删除给定ID的500000个。 我的想法是创建一个类似的查询:
DELETE FROM TableName WHERE ID IN (id1, id2, ...........)
我使用简单的C#代码生成的。 问题是: 我可以在ID数组中设置多少个值。
如果某人有更好的方法来更有效地实现这种删除,那么我愿意接受各种想法。
答案 0 :(得分:1)
如果无法通过任何比较确定您的身份证明(如WHERE ID < 1000000
中所述)
INSERT
将它们放入具有多个插入的临时表中,然后JOIN
这个临时表给你了但插入可能会成为问题。你应该检查一下。你怎么能加快这件事呢?
答案 1 :(得分:1)
最后我的解决方案并没有那么糟糕: 1.对ID进行排序(以节省服务器分页) 2.使用C#代码查询创建,其中包含500个ID。 3.逐个发送查询。
我假设当我使用1000+以上的查询时,sql server处理查询的时间让我失望(毕竟在sql server中运行的所有查询都在进行处理和优化)。
我希望这有助于某人