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

Flo*_*rei 4 php mysql sql mariadb

使用IN子句在单个查询中可以更新的行数是否有限制?例如:

mysql_query("UPDATE `table` SET `row`=1 WHERE `id` IN(1,2,3,4,5,6,7,8....5000)");
Run Code Online (Sandbox Code Playgroud)

我可以一次更新所有5000行吗?或者MySQL是否对条款中的项目数量有限制IN

请注意:我想知道在单个查询中是否存在更新限制,其中MySQL会说"超出IN子句条目的最大数量".也就是说,我正在询问MySQL中"最大数据包大小"设置以外的可能限制.

Gor*_*son 6

根据IN函数MySQL文档,可以在这样的列表中指定的值的数量没有硬性限制.文档具体说:

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

然而,有一个问题在这里,讨论是否有可能是一个实际的限制之外,其与使用时包含值的临时表可能会产生更好的性能JOININ(subquery)WHERE子句.