给出如下查询:
DELETE FROM FOO WHERE ID in (1,2,3,4,....);
包含中的值数量是否有上限? (我已经看到甲骨文抱怨1000,但那是很久以前的事了。我不知道这是依赖于安装,依赖oracle版本等等,还是mysql如何限制它。
< / LI>性能影响是什么?将这组值分解为更小的子集并发送多个删除请求会更快吗?
答案 0 :(得分:4)
来自the docs:
IN列表中的值数量仅受max_allowed_packet值的限制。
至于性能,当他们开始接近一千个ID时,我会分解查询。 IN
已经进行了很好的优化,但似乎仍然没有任何好处可以在其上投放大量的列表。
答案 1 :(得分:2)
如果您想确保您的语句始终有效,请将它们放在临时表中并对其执行IN语句。