#sql #mysql
Такой вопрос: если я делаю sql запрос типа WHERE id IN(12,3,54,5,6,8,234) и так далее, не станет ли это причиной, например, падения сервера, если количество этих самых IN возрастет до, например, 10000 идентификаторов?
Ответы
Ответ 1
Ну подумайте, 10к идентификаторов. Бегло - это 45к-50к символов. Только распарсить такой запрос - уже проблема. Упасть может и не упадет, но нагрузит капитально. В любом случае - так лучше не делать.Ответ 2
MS Sql Server бросает исключение, если у запроса более 2100 параметров. У MySql тоже могут быть подобные ограничения. Если мне нужно сделать выборку, у которой в IN больше, чем 2100 значений, я группирую набор значений и делаю несколько запросов.Ответ 3
Не упадет. Но при таком количестве уже стоит подумать о введении дополнительного столбца/критерия/кэширующей таблички. Часто подобная вашей ситуация возникает в интернет магазинах с большим каталогом, когда требуется перекрестить несколько результатов поиска, а произвести повторный поиск неэкономично. Там применяется кэширование.
Комментариев нет:
Отправить комментарий