Обмеження умов MySQL IN


84

Гей, я повинен використовувати умову IN у своєму операторі MySQL з великим набором ідентифікаторів.

Приклад

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

Чи існує обмеження для елементів, які може містити вираз IN?


Відповіді:


107

Ні, немає, перевірте посібник щодо функції IN :

Кількість значень у INсписку обмежена лише значенням max_allowed_packet .


отже, якщо у мене є, наприклад, оновлення з where id IN (14000 ids), воно буде працювати, поки запит на оновлення не перевищить 64 МБ (що є значенням за замовчуванням), так?
Олег Абражаєв

1
@OlegAbrazhaev INКлючове слово не має жодних вбудованих обмежень, однак можуть бути й інші обмеження, наприклад, max_allowed_packetякі можуть побічно обмежувати кількість значень. Якщо встановити це значення 1024 (байти), ви можете ефективно використовувати лише обмежену кількість значень.
Прогман,

20

Наскільки мені відомо в mysql, у INзаяві немає обмежень на елементи .

В оракулі, хоча в INзаяві обмежено 1000 елементів .

Але більше елементів у IN, ефективність вашого запиту сповільниться, якщо цей стовпець не проіндексовано.


3
залежить, якщо IN - це первинний ключ пошуку, швидкою причиною є повернення з індексу
ajreal

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.