2

我有一个包含超过 3000000 个条目的表,我需要使用给定的 ID 删除其中的 500000 个。我的想法是创建一个查询,例如:

DELETE FROM TableName WHERE ID IN (id1, id2, ...........)

我用一个简单的 C# 代码生成。问题是:我可以在 ID 数组中设置多少个值是否有限制。

如果有人有更好的方法来更有效地实现此删除,我愿意接受想法。

4

2 回答 2

1

如果无法通过任何比较(如WHERE ID < 1000000)确定您的 ID,您可以

  1. INSERT将它们放入具有多个插入的临时表中,然后
  2. JOIN这张临时表给你

但是插入可能会出现问题。你应该检查一下。你怎么能加快这件事?

  1. 批量删除
  2. 将 ID批量插入临时表
于 2011-04-23T17:14:19.437 回答
1

最后,我的解决方案效果还不错: 1. 对 ID 进行排序(以保存服务器分页) 2. 使用 C# 代码查询创建,其中包含 500 个 ID。3.一一发送查询。

我假设当我使用具有 1000+ ids 的查询时,sql server 处理查询的时间减慢了我的速度(毕竟你在 sql server 中运行的所有查询都在处理和优化)。

我希望这对某人有帮助

于 2011-04-24T07:54:17.207 回答