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?


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 .


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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.