我得到了一堆 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_packet”参数控制。
关于mysql - MySQL 中传递给 IN() 的最大项目数是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406469/