mysql - MySQL 中传递给 IN() 的最大项目数是多少

标签 mysql sql

我得到了一堆 ID(来自外部来源),我需要将这些 ID 与我们数据库中的 ID 进行交叉引用,并过滤掉那些介于特定日期之间并且也“启用”和其他一些参数的 ID。我可以通过以下方式轻松做到这一点:

SELECT * FROM `table` WHERE `id` IN (csv_list_of_external_ids) 
    AND (my other cross-reference parameters);

通过这样做,我将从所有传入的 ID 中得到我想要的 ID。但很明显,当外部 id 数以千计时,这不是一个非常有效的方法。而且我不确定 MySQL 是否会支持如此庞大的查询。

鉴于无法缓存任何内容(因为用户数据和外部 ID 在每次查询时都会发生很大变化),并且这些查询至少每 10 秒发生一次。还有哪些其他 SQL 替代方案?

最佳答案

我相信唯一的限制是实际查询的长度,它由 my.cnf 文件中的“max_allowed_pa​​cket”参数控制。

关于mysql - MySQL 中传递给 IN() 的最大项目数是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406469/

相关文章:

mysql - 无法在mysql上分区表

php - 用条件更新多列

php - 使用左连接和 MySQL IF 语句创建 PHP 数组

mysql - 在 cakephp 中命名表

mysql - 为什么左连接和内连接返回相同的结果

sql - 如何在 SQL Server 中按希腊字母和普通字母排序?

mysql - 如何编写存储过程

sql - 按两列的最小值排序

SQL错误: ORA-00907: missing right parenthesis

php - CakePHP 3 : How to display associated data for each record in index. CTP?