Veneomin
@Veneomin

Можно ли делать запросы к БД в цикле?

У меня есть массив элементов и мне нужно узнать кое что о каждом из них, я это делаю циклом и в теле цикла делаю запросы к БД (около 100-200 итераций). Это плохо или так можно делать?
  • Вопрос задан
  • 1533 просмотра
Пригласить эксперта
Ответы на вопрос 4
petermzg
@petermzg
Самый лучший программист
Можно, но для производительности это плохо.
Рассмотрите возможность использования оператора IN в sql запросе
Ответ написан
geeek
@geeek
Это вообще в корне неправильно. Можно в цикле сформировать строку с запросом, и потом выполнить 1 (ОДИН!) запрос. Либо сформировать XML и передать его в хп\функцию, опять же чтобы был 1 запрос. В цикле выполнять запросы нельзя(ну или можно если твоя цель - говнокодить).
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Меня немного пугает множественное число в слове "запросы". Больше одного на каждую итерацию цикла? Такого поведения по максимуму надо избегать. Если у вас там примитивный скрипт простейшего select-а с одной таблицы, то не смертельно. Но худо бедно сложные скрипты лучше циклом не вызывать. Как вариант - склейте все параметры в одну строковую переменную через разделитель, а на сервере БД разрежте строку на отдельные компоненты и выполните один хитрый скрипт.
Ответ написан
Комментировать
rpsv
@rpsv
делай либо хорошо, либо никак
Если запросы к одной таблице, то лучше наверное сделать один запрос, а потом его разбирать (fetch'ить к примеру чтобы всю массу сразу не принимать).
--
Либо можно подумать над кешированием, чтобы постоянно не дергать так базу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы