我可以使用IN
子句在单个查询中更新的行数是否有限制?例如:
mysql_query("UPDATE `table` SET `row`=1 WHERE `id` IN(1,2,3,4,5,6,7,8....5000)");
我可以一次更新所有5000行吗?或者MySQL对IN
子句中的条目数量有限制吗?
请注意:我想知道在一个查询中是否有更新限制,MySQL会说像"in子句条目的最大数量超过"之类的东西。也就是说,我正在询问可能的限制而不是 MySQL中的"最大数据包大小"设置。
根据IN函数的MySQL文档,对于可以在这样一个列表中指定的值的数量没有硬限制。文档特别指出:
in列表中的值的数量仅受max_allowed_packet值的限制。
然而,这里有另一个问题,讨论是否可能存在实际限制,超过这个限制,包含这些值的临时表在WHERE
子句中与JOIN
或IN(subquery)
一起使用时可能会产生更好的性能。