WHERE IN查询中可能的最大值

时间:2011-04-23 16:56:33

标签: sql-server-2008 sql-delete where-in

我有一个超过3000000个条目的表,我需要删除给定ID的500000个。 我的想法是创建一个类似的查询:

DELETE FROM TableName WHERE ID IN (id1, id2, ...........)
我使用简单的C#代码生成的

。 问题是: 我可以在ID数组中设置多少个值。

如果某人有更好的方法来更有效地实现这种删除,那么我愿意接受各种想法。

2 个答案:

答案 0 :(得分:1)

如果无法通过任何比较确定您的身份证明(如WHERE ID < 1000000中所述)

  1. INSERT将它们放入具有多个插入的临时表中,然后
  2. JOIN这个临时表给你了
  3. 但插入可能会成为问题。你应该检查一下。你怎么能加快这件事呢?

    1. 删除多个批量
    2. 将ID插入临时表in bulks

答案 1 :(得分:1)

最后我的解决方案并没有那么糟糕:  1.对ID进行排序(以节省服务器分页)  2.使用C#代码查询创建,其中包含500个ID。  3.逐个发送查询。

我假设当我使用1000+以上的查询时,sql server处理查询的时间让我失望(毕竟在sql server中运行的所有查询都在进行处理和优化)。

我希望这有助于某人