MySQL IN Bedingungslimit

84

Hey, ich muss die IN-Bedingung in meiner MySQL-Anweisung mit einer großen Anzahl von IDs verwenden.

Beispiel

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

Gibt es ein Limit für Elemente, die die IN-Anweisung haben kann?

xpepermint
quelle
1
Mögliches Duplikat der MySQL-Anzahl von Elementen in "in Klausel"
Metro Smurf

Antworten:

107

Nein, gibt es nicht, lesen Sie das Handbuch über die IN-Funktion :

Die Anzahl der Werte in der INListe ist nur durch den Wert max_allowed_packet begrenzt .

Progman
quelle
Wenn ich zum Beispiel ein Update mit habe where id IN (14000 ids), funktioniert es, bis die Update-Abfrage weniger als 64 MB beträgt (was der Standardwert ist), oder?
Oleg Abrazhaev
1
@OlegAbrazhaev Das INSchlüsselwort hat keine eingebauten Grenzen, es kann jedoch auch andere Grenzen geben, wie z. B. max_allowed_packetdie indirekte Begrenzung der Anzahl der Werte. Wenn Sie diesen Wert auf 1024 (Byte) setzen, können Sie effektiv nur eine begrenzte Anzahl von Werten verwenden.
Progman
20

Soweit ich in MySQL weiß, gibt es keine Begrenzung für Elemente in der INAnweisung.

Im Orakel gibt es ein Limit von 1000 Elementen in der INAnweisung.

Bei mehr Elementen INwird Ihre Abfrageleistung jedoch langsamer, sofern diese Spalte nicht indiziert ist.

Sachin Shanbhag
quelle
3
hängt davon ab, ob IN der
Suchprimärschlüssel
-2

Geben Sie hier die Bildbeschreibung ein

1073741824 Dies ist die in MySQL-Dokumenten angegebene Grenze

praveen
quelle