Hej, muszę użyć warunku IN w mojej instrukcji MySQL z dużym zestawem identyfikatorów.
Przykład
SELECT * FROM users WHERE id IN (1,2,3,4...100000)
Czy istnieje limit pozycji, które może mieć wyciąg IN?
mysql
conditional-statements
xpepermint
źródło
źródło
Odpowiedzi:
Nie, nie ma, sprawdź instrukcję funkcji IN :
źródło
where id IN (14000 ids)
, będzie działać, dopóki zapytanie aktualizacyjne nie będzie mniejsze niż 64 MB (co jest wartością domyślną), prawda?IN
kluczowe nie ma żadnych wbudowanych ograniczeń, jednak mogą istnieć inne ograniczenia, takie jakmax_allowed_packet
pośrednio ograniczające liczbę wartości. Jeśli ustawisz tę wartość na 1024 (bajty), możesz efektywnie używać tylko ograniczonej liczby wartości.O ile wiem, w mysql nie ma limitu pozycji w
IN
wyciągu.Jednak w wyroczni istnieje limit 1000 pozycji w
IN
wyciągu.Im więcej elementów
IN
, tym wydajność zapytania będzie wolniejsza, chyba że ta kolumna zostanie zindeksowana.źródło
1073741824 Jest to limit podany w dokumentach MySQL
źródło