Если ли ограничение на длину SQL запроса (большой IN)?
Приветствую!
Есть большая таблица на 30 колонок и 5 млн строк. Необходимо пройтись по каждой строке, и совершить дополнительную обработку данных. Решил выбирать строки порциями по 100 тыс строк за раз.
Делаю в два прохода:
1. Сначала циклом выбираю по 100-300 тыс id SELECT id FROM tbl LIMIT X, 100000
2. Вторым запросом по этим id вытягиваю остальные колонки: SELECT * FROM tbl WHERE id IN (...)
Насколько корректно перечислять в блоке IN - 100 тысяч id? А 300 тысяч?
Есть ли ограничение на длину запроса? Как добиться максимальной скорости выполнения?
Буду признателен, если поделитесь опытом. Спасибо.
Насколько я знаю SQL, LIMIT 0, 100 совершенно необязательно выдаст вам первые 100 id по порядку.
Для этого нужно уточнить ORDER BY id.
Ну, и два запроса к одной и той же таблице, чтобы сначала выбрать id, а потом строки с ними - это уже за гранью где-то. Дайте угадаю - потом еще идет третий, UPDATE? Или - по UPDATE на каждую строчку?
Может, лучше озвучить саму задачу?