限制“IN”查询中的值数量

时间:2009-07-02 15:24:19

标签: sql mysql

给出如下查询:

DELETE FROM FOO WHERE ID in (1,2,3,4,....);
  • 包含中的值数量是否有上限? (我已经看到甲骨文抱怨1000,但那是很久以前的事了。我不知道这是依赖于安装,依赖oracle版本等等,还是mysql如何限制它。

    < / LI>
  • 性能影响是什么?将这组值分解为更小的子集并发送多个删除请求会更快吗?

2 个答案:

答案 0 :(得分:4)

来自the docs

  

IN列表中的值数量仅受max_allowed_packet值的限制。

至于性能,当他们开始接近一千个ID时,我会分解查询。 IN已经进行了很好的优化,但似乎仍然没有任何好处可以在其上投放大量的列表。

答案 1 :(得分:2)

如果您想确保您的语句始终有效,请将它们放在临时表中并对其执行IN语句。