给定如下查询:
DELETE FROM FOO WHERE ID in (1,2,3,4,....);
包含值的数量是否有上限? (我见过 Oracle 在 1000 时提示,但那是很久以前的事了。我不知道那是安装依赖、oracle 版本依赖等等,还是 mysql 是如何限制它的。
性能影响是什么?将值集分解成更小的子集并发送多个删除请求会更快吗?
最佳答案
来自 the docs :
The number of values in the IN list is only limited by the max_allowed_packet value.
至于性能,当它们开始接近一千个左右的 ID 时,我会分解查询。 IN
优化得很好,但向它扔大量列表似乎仍然没有任何好处。
关于sql - "IN"查询中值的数量限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1075048/