Задать вопрос
@bizzonaru

Как избавиться от distinct?

Есть таблица А, к этой таблице по первичному ключу есть другие таблицы, каждая из которых может содержать много одинаковых первичных ключей таблиц А. Есть дополнительно при запросе к таблице А условия выборки. Если смотреть код, то получается примерно так:
$query = TableA:find()
                ->joinWith(['tableb', 'tablec', 'tablee'], true, 'LEFT JOIN')
      ...


Чтобы убрать дубликаты TableA нужно использовать distinct, который начинает сильно тормозить запрос при росте данных в таблицах. Как можно сделать по другому, чтобы не было дубликатов TableID?
  • Вопрос задан
  • 552 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
qonand
@qonand
Software Engineer
Чтобы убрать дубликаты TableA нужно использовать distinct, который начинает сильно тормозить запрос при

Что у Вас за дубликаты? помоему Вы что-то не так делаете, или не так понимаете....
Ответ написан
Комментировать
@bizzonaru Автор вопроса
Дубликаты, потому что есть таблиц один-ко-многим.
Ответ написан
Комментировать
@n-fom
По видимому у Вас неправильный join. Если вы выложите сюда код получающегося запроса, подсказать будет проще. Само по себе применение distinct, говорит о не правильно подходе к построению запроса. Как вариант можете использовать join c подзапросом, при необходимости используя group by
Ответ написан
mitaichik
@mitaichik
Еслм связи один ко многим то вам и DISTINCT не поможет, разве что SELECT урезать. Тут надо результат группировать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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