@sfedosimov

Как соединить результат выборки один-ко-многим MySQL?

Есть таблица с задачами и есть таблица с полями этих задач (База Redmine).
Сейчас выборка получается следующим способом:
select
  i.subject
  ,cv.value
  ,cv1.value
  ,cv2.value
from
  issues i
  left join custom_values cv on cv.custom_field_id=23 and cv.customized_id = i.id
  left join custom_values cv1 on cv1.custom_field_id=21 and cv1.customized_id = i.id
  left join custom_values cv2 on cv2.custom_field_id=24 and cv2.customized_id = i.id
where 1=1
  and t.id in (2,3,4,5)
  and cv.value = 'Да'


Сам запрос немного упрощен, дабы не захламлять.
Вопрос заключается в следующем: как можно упростить джоины, чтобы выборка была быстрее?
  • Вопрос задан
  • 245 просмотров
Пригласить эксперта
Ответы на вопрос 2
disc
@disc
веб-разработчик
попробую посоветовать псевдо-кодом:
оставить один джойн
left join custom_values cv on cv.customized_id = i.id


и перенести часть условие в WHERE
cv.custom_field_id IN (21,23,24)
Ответ написан
Immortal_pony
@Immortal_pony Куратор тега MySQL
Запрос не выгллядит таким, чтобы его можно было упростить.
Но для увеличения скорости выборки можно добавить индекс по полям custom_field + customized_id, если его еще нет.
Ответ написан
Ваш ответ на вопрос

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

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