Palych_tw
@Palych_tw
Типа веб-разработчик

Оптимален ли такой JOIN запрос?

Всем привет. Имею такую структуру БД:
T1
id

T2
id

T3
id
t2_id
t1_id

Нужно написать такой запрос, что бы выбрать из таблицы T2 все записи, для которых есть связанная запись в T3. Выбрать нужно по id из T1.
Ну то есть, нужны все T2, для которых существуют записи из T3 по id из T1.

Написал такой JOIN
select "T2".* from "T2" inner join "T3" on "T3"."t2_id" = "T2"."id" WHERE "T3"."t1_id" " = ?


Я получаю, что хочу. но правильно ли я понимаю, что при таком запросе сначала все равно выбираются все записи через JOIN, а потом уже по ним делается WHERE ? Или если будет LIMIT, например 100, то можно не переживать за нагрузку? И нужно ли как-то делать JOIN из 3 таблиц?

P.S. если плохо объяснил, можно, например, так объяснить задачу. Есть юзеры, продукты и заказы. Нужно выбрать все товары, которые покупал юзер.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 2
terrier
@terrier
Посмотреть реальный порядок операций можно, использовав EXPLAIN - он зависит от решений принятых оптимизатором. Которые в свою очередь зависят от индексов размера данных и распределения данных и факторов специфичных для конкретной СУБД.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Это очень сильно зависит от конкретной реализации парсера-оптимизатора запросов.

Но чисто сферически лесенка из пары-тройки inner join посильна любому оптимизатору.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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