Гей, я повинен використовувати умову IN у своєму операторі MySQL з великим набором ідентифікаторів.
Приклад
SELECT * FROM users WHERE id IN (1,2,3,4...100000)
Чи існує обмеження для елементів, які може містити вираз IN?
Гей, я повинен використовувати умову IN у своєму операторі MySQL з великим набором ідентифікаторів.
Приклад
SELECT * FROM users WHERE id IN (1,2,3,4...100000)
Чи існує обмеження для елементів, які може містити вираз IN?
Відповіді:
Ні, немає, перевірте посібник щодо функції IN :
Кількість значень у
INсписку обмежена лише значенням max_allowed_packet .
where id IN (14000 ids), воно буде працювати, поки запит на оновлення не перевищить 64 МБ (що є значенням за замовчуванням), так?
INКлючове слово не має жодних вбудованих обмежень, однак можуть бути й інші обмеження, наприклад, max_allowed_packetякі можуть побічно обмежувати кількість значень. Якщо встановити це значення 1024 (байти), ви можете ефективно використовувати лише обмежену кількість значень.
Наскільки мені відомо в mysql, у INзаяві немає обмежень на елементи .
В оракулі, хоча в INзаяві обмежено 1000 елементів .
Але більше елементів у IN, ефективність вашого запиту сповільниться, якщо цей стовпець не проіндексовано.