Эй, мне нужно использовать условие IN в моем операторе MySQL с большим набором идентификаторов.
пример
SELECT * FROM users WHERE id IN (1,2,3,4...100000)
Есть ли предел, если элементы, которые может иметь оператор IN?
mysql
conditional-statements
xpepermint
источник
источник
Ответы:
Нет, обратитесь к инструкции о функции IN :
источник
where id IN (14000 ids)
, оно будет работать, пока запрос на обновление не станет меньше 64 МБ (что является значением по умолчанию), верно?IN
Ключевое слово не имеет встроенных ограничений, однако могут быть и другие ограничения, например,max_allowed_packet
которые могут косвенно ограничивать количество значений. Если вы установите это значение на 1024 (байта), вы можете эффективно использовать только ограниченное количество значений.Насколько я знаю, в mysql нет ограничений на элементы в
IN
заявлении.Хотя в Oracle существует ограничение в 1000 элементов в
IN
заявлении.Но чем больше элементов
IN
, тем ниже производительность вашего запроса, если этот столбец не проиндексирован.источник
1073741824 Это предел, указанный в документации Mysql.
источник