Ограничение условий MySQL IN

87

Эй, мне нужно использовать условие IN в моем операторе MySQL с большим набором идентификаторов.

пример

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

Есть ли предел, если элементы, которые может иметь оператор IN?

xpepermint
источник
1
Возможное дублирование количества элементов MySQL в пределах "in clause"
Metro Smurf

Ответы:

107

Нет, обратитесь к инструкции о функции IN :

Количество значений в INсписке ограничено только значением max_allowed_packet .

Progman
источник
так что если у меня есть, например, обновление с where id IN (14000 ids), оно будет работать, пока запрос на обновление не станет меньше 64 МБ (что является значением по умолчанию), верно?
Олег Абражаев
1
@OlegAbrazhaev INКлючевое слово не имеет встроенных ограничений, однако могут быть и другие ограничения, например, max_allowed_packetкоторые могут косвенно ограничивать количество значений. Если вы установите это значение на 1024 (байта), вы можете эффективно использовать только ограниченное количество значений.
Progman
21

Насколько я знаю, в mysql нет ограничений на элементы в INзаявлении.

Хотя в Oracle существует ограничение в 1000 элементов в INзаявлении.

Но чем больше элементов IN, тем ниже производительность вашего запроса, если этот столбец не проиндексирован.

Сачин Шанбхаг
источник
4
зависит, если IN является первичным ключом поиска, это быстро, потому что это возврат из индекса
ajreal
-2

введите описание изображения здесь

1073741824 Это предел, указанный в документации Mysql.

Praveen
источник