Límite de condición de MySQL IN

84

Oye, tengo que usar la condición IN en mi declaración MySQL con un gran conjunto de identificadores.

Ejemplo

SELECT * FROM users WHERE id IN (1,2,3,4...100000)

¿Existe un límite si los elementos que puede tener la declaración IN?

xpepermint
fuente
1
Posible duplicado del número de elementos
Metro Smurf

Respuestas:

107

No, no lo hay, consulte el manual sobre la función IN :

El número de valores de la INlista solo está limitado por el valor max_allowed_packet .

Progman
fuente
así que si tengo, por ejemplo, una actualización con where id IN (14000 ids), funcionará hasta que la consulta de actualización sea inferior a 64 MB (que es el valor predeterminado), ¿verdad?
Oleg Abrazhaev
1
@OlegAbrazhaev La INpalabra clave no tiene límites incorporados , sin embargo, puede haber otros límites como los max_allowed_packetque podrían limitar indirectamente el número de valores. Si establece este valor en 1024 (bytes), puede usar de manera efectiva solo un número limitado de valores.
Progman
20

Por lo que sé en mysql, no hay límite para los elementos de la INdeclaración.

Aunque en Oracle, hay un límite de 1000 elementos en la INdeclaración.

Pero a medida que los elementos INestén incluidos, el rendimiento de su consulta se ralentizará a menos que esa columna esté indexada.

Sachin Shanbhag
fuente
3
depende, si el IN es la clave primaria de búsqueda, es rápido porque es el retorno del índice
ajreal
-2

ingrese la descripción de la imagen aquí

1073741824 Este es el límite dado en los documentos de Mysql

praveen
fuente