mysql 的 where 子句中的最大值

Gop*_*pal 3 max where-clause

有谁知道我可以在 where in 子句中给出多少个值?我在 where in 子句中得到 25000 个值,并且 mysql 无法执行。有什么想法吗?等待你的想法

小智 5

尽管这已经很旧了,但它仍然出现在搜索结果中,因此值得回答。

MySQL 中对于查询的长度没有硬编码的最大值。这包括查询的所有部分,例如 WHERE 子句。

然而,有一个名为 max_allowed_pa​​cket 的值决定了您可以在 MySQL 服务器进程上运行的最大查询。它与查询中的元素数量无关,而是与查询的总长度有关。所以

SELECT * FROM mytable WHERE mycol IN (1,2,3);
Run Code Online (Sandbox Code Playgroud)

达到极限的可能性小于

SELECT * FROM mytable WHERE mycal IN ('This string','That string','Tother string');
Run Code Online (Sandbox Code Playgroud)

max_allowed_pa​​cket 的值在服务器之间是可配置的。但几乎可以肯定的是,如果您发现自己由于正在编写超长的 SQL 语句而达到了极限(而不是处理二进制数据,这是达到极限的合理原因),那么您需要重新考虑您的 SQL。