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