а нет ограничения на количество значений в IN () ?Автор оригинала: tend
Просто у меня почему-то какие-то сомнения насчет выражения: WHERE `id` IN(1,3,5,7,9,10 и так тысяча номеров)
Была мысль насчет цикла, в котором для каждого ID отдельный запрос. Но, насколько я понимаю, этот вариант не из лучших. Или пойдет?
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_inThe number of values in the IN list is only limited by the max_allowed_packet value.
обычно у хостеров ограничение на 1 мегабайт, то есть (учитывая размерность целочисленного поля таблицы в 4 байта) это около 200 000 вхождений в IN(....)Автор оригинала: zerkms
pilot911
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_in
Заменять надо будет по мере необходимости, то есть это может быть далеко не один раз.Если один раз заменить, то я бы не парился и сделал бы в цикле. Тем более, если есть список номеров строк в массиве.
Строки выбираются беспорядочно, поэтому здесь я другого способа не нашел, как просто перечислять.А вообще, стоит уточнить задачу, может быть там можно подобрать нормальное условие для WHERE, а не номера строк.
Вообще хотелось бы узнать разницу между перечислением всех ID в IN() и циклом, а именно: есть ли принципиальная разница между одним запросом, в котором указана тысяча ID, и тысячей запросов по одному ID?