使用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中设置。
答案 0 :(得分:6)
根据MySQL documentation for the IN function,对于可以在此类列表中指定的值的数量,没有硬限制。文档具体说:
IN列表中的值数量仅受max_allowed_packet值的限制。
但是,还有另一个问题here讨论是否可能存在实际限制,超出此限制时,包含这些值的临时表在与{{一起使用时可能会产生更好的性能1}}或JOIN
子句中的IN(subquery)
。