Эй, мне нужно использовать условие 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
заявлении.
Хотя в Oracle существует ограничение в 1000 элементов в IN
заявлении.
Но чем больше элементов IN
, тем ниже производительность вашего запроса, если этот столбец не проиндексирован.