@denism300

Как оптимизировать sql запросы и избавиться от цикла?

Есть запрос вида:
select a.field1, a.field2, a.field3, b.field1, b.field2
from table1 as a
left join table2 as b on a.field1 = b.field1
where ...

данные из него пишутся в объект.
далее нужно добавить данные в объект из других таблиц.
на данный момент сделал так:
foreach $obj as o {
   select c.field1
   from table3 as c
   left join table4 as d on c.field2 = d.field2
   where c.field3 = a.field1
}

код несколько утрирован, но смысл, думаю, понятен.
понятно, что куча обращений к БД в цикле грузит базу
как это упростить?
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
Что мешает дорасширить исходный запрос нужными join и получать ровно нужный список?
Ответ написан
Комментировать
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Из результата первого запроса выбрать в массив все a.field1.
Второй запрос выполнить с выборкой всех строк через where c.field3 in (массив a.field1)

Итого 2 запроса

Либо сразу в один джоинить в чем проблема?(смотря сколько строк там должно быть в этом цикличном запросе)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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