gpt4 book ai didi

mysql - 什么定义了 MySQL WHERE 子句中项目数量的上限?

转载 作者:行者123 更新时间:2023-11-29 11:05:09 25 4
gpt4 key购买 nike

我正在查看其他人编写的一些代码,这些代码采用数组并制定 MySQL 的 SELECT 查询,该查询通常在 WHERE IN 子句中包含很多术语。它编写的语言恰好是 PHP,但我认为这可能与我的问题无关。

假设某个 $record_ids 数组中包含数百个甚至可能数千个整数,该数组的创建方式如下:

$sql = "SELECT * FROM my_table WHERE id IN (" . implode(",", $record_ids) . ")";

这将导致一个可能如下所示的查询

SELECT * FROM my_table WHERE id IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,7,18,19, 20, 21, 22);

除了 IN 子句中可能有数千个 ID。我的问题是 MySQL 是否对 WHERE IN 子句中可以放入的术语数量强制实现某些上限?如果不是,那么这个查询的大小肯定有一些约束或限制——这个限制是什么?

最佳答案

那就是the size of the query packet ,通常以兆字节为单位。

对于数千个值,也许要连接的临时表可能会更有利。不过,我从未测试过这一点。

更新:答案已经给出了,还有the performance question has been answered当项目数量超过几十个时,最好将项目放入临时表中

此外,第二种解决方案可能更容易移植到具有更严格限制的其他 RDBMS(或 MySQL 配置!)。想象一下,需要 8M 数据包大小,而托管只能提供 4 个数据包。

关于mysql - 什么定义了 MySQL WHERE 子句中项目数量的上限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41525439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com