Задать вопрос
@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
}

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

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

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

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

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