MySQL IN子句:最大参数数

Dav*_*nes 12 mysql

假设您有以下查询:

SELECT * FROM table1 WHERE table1.id IN (1, 2, 3, 4, 5, ..., 999999)
Run Code Online (Sandbox Code Playgroud)

IN条款中项目数的合理最大值是多少?我正在使用Sphinx生成全文搜索结果并将ID插入MySQL查询.这是一种可接受的方式吗?

dav*_*tty 13

您还可以使用IN子句获取查询结果,例如:

SELECT * FROM table1 
WHERE table1.id IN 
    (
   SELECT id from table2
    )
Run Code Online (Sandbox Code Playgroud)

这样,您就不需要生成包含所有可能值的文本字符串.

在mysql中,您应该能够根据需要在IN子句中放置尽可能多的值,仅受"max_allowed_pa​​cket"值的约束.

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_in http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html #sysvar_max_allowed_pa​​cket