我有一个包含超过 3000000 个条目的表,我需要使用给定的 ID 删除其中的 500000 个。我的想法是创建一个查询,例如:
DELETE FROM TableName WHERE ID IN (id1, id2, ...........)
我用一个简单的 C# 代码生成。问题是:我可以在 ID 数组中设置多少个值是否有限制。
如果有人有更好的方法来更有效地实现此删除,我愿意接受想法。
我有一个包含超过 3000000 个条目的表,我需要使用给定的 ID 删除其中的 500000 个。我的想法是创建一个查询,例如:
DELETE FROM TableName WHERE ID IN (id1, id2, ...........)
我用一个简单的 C# 代码生成。问题是:我可以在 ID 数组中设置多少个值是否有限制。
如果有人有更好的方法来更有效地实现此删除,我愿意接受想法。
如果无法通过任何比较(如WHERE ID < 1000000
)确定您的 ID,您可以
INSERT
将它们放入具有多个插入的临时表中,然后JOIN
这张临时表给你但是插入可能会出现问题。你应该检查一下。你怎么能加快这件事?
最后,我的解决方案效果还不错: 1. 对 ID 进行排序(以保存服务器分页) 2. 使用 C# 代码查询创建,其中包含 500 个 ID。3.一一发送查询。
我假设当我使用具有 1000+ ids 的查询时,sql server 处理查询的时间减慢了我的速度(毕竟你在 sql server 中运行的所有查询都在处理和优化)。
我希望这对某人有帮助