我可以通过MySQL查询的IN子句更新的行数是否有限制?

时间:2015-06-06 09:58:43

标签: php mysql sql mariadb

使用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子句条目的最大数量&#34 ; 。也就是说,我正在询问可能的限制 除了 "最大数据包大小"在MySQL中设置。

1 个答案:

答案 0 :(得分:6)

根据MySQL documentation for the IN function,对于可以在此类列表中指定的值的数量,没有硬限制。文档具体说:

  

IN列表中的值数量仅受max_allowed_pa​​cket值的限制。

但是,还有另一个问题here讨论是否可能存在实际限制,超出此限制时,包含这些值的临时表在与{{一起使用时可能会产生更好的性能1}}或JOIN子句中的IN(subquery)