powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
9 сообщений из 9, страница 1 из 1
LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
    #39780069
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Меня интересует именно практическая сторона - то есть вопросы оптимизации. Будет ли реально INNER JOIN оптимальнее чем LEFT JOIN + WHERE и в каких случаях?

Workaround
Я почитал разную инфу на stackoverflow по этому вопросу, но зачастую объяснения не уходят вглубь или остаются лишь теориями и предположениями, которые никто не подтвердил.

Есть такой топик: https://stackoverflow.com/questions/186071/left-join-outperforming-inner-join

В котором более менее человек старается что-то проверить. Смысл сводится к тому, что LEFT JOIN + WHERE быстрее, чем INNER JOIN. И есть там предпоследний ответ, который не был проверен:
В нем предлагается переместить INNER JOIN вперед всех других соединений и то что было в WHERE полностью перенести в ON-clause:
Dannie JugeThat should give you an extra performance because:

You put all the inner joins before any "left" or "right" join appears. This filters out some records before applying the subsequent outer joins
The short-circuit of the "AND" operators (order of the "AND" matters). If the comparition between the columns and the literals is false, it won't execute the required table scan for the comparition between the tables PKs and FKs

Кто что по этому поводу имеет сказать? Может даже есть что то про это почитать. на том же overflow? Не нашел пока.
...
Рейтинг: 0 / 0
LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
    #39780072
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно как это в Oracle.
Но и как это в других БД тоже интересно.
...
Рейтинг: 0 / 0
LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
    #39780082
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Промешан_Интересно как это в Oracle.
В Oracle есть три базовых алгоритма для выполнения соединений, каждый из которых имеет по нескольку вариаций, и куча вариантов доступа к данным.
Перемножив одно на другое получите довольно большое количество способов, которыми Oracle может выполнить конкретный sql-запрос, даже не рассматривая многочисленные трансформации, которые могут быть применены к исходному тексту.
А если в соединении участвует более 3-4 таблиц, да на каждой по нескольку индексов, то протокол работы CBO по построению плана запроса глазами читать придется до морковкина заговения - столько вариантов он переберет пока на чем-то остановится...
В этой связи рассуждать на заданную тему "вообще" лучше в ближайшем "магическом салоне", привлекая в качестве пруфов хрустальные шары различных моделей и карты таро...
...
Рейтинг: 0 / 0
LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
    #39780097
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Промешан_Смысл сводится...Dannie Juge...Или автор не обладает компетенциями, чтобы сысл сходился, или mysql не стоит вообще сравнивать с субд.
...
Рейтинг: 0 / 0
LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
    #39780118
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Промешан_,

20168262
...
Рейтинг: 0 / 0
LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
    #39780156
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
run09_Промешан_,

20168262
ссылка на книгу есть, но где ее там скачать не нашел.
...
Рейтинг: 0 / 0
LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
    #39780179
Pavel_PV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже всё ответили до меня.
Могу лишь добавить общих суждений. Нужно рассматривать каждый запрос отдельно, нельзя так сказать что если "фаза луны =2", то используйте INNER иначе LEFT. Есть данные, есть запрос, понимание как запрос сделать оптимальнее и есть план оракла. Если планы при использовании Inner и LEFT отличаются, то нужно смотреть какой будет оптимальнее и почему.
...
Рейтинг: 0 / 0
LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
    #39780227
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Промешан_run09_Промешан_,

20168262
ссылка на книгу есть, но где ее там скачать не нашел.Только сегодня, только для тебя, на блюдечке .
...
Рейтинг: 0 / 0
LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
    #39780970
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кобанчег,

спасибки ^^
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / LEFT JOIN + WHERE vs INNER JOIN - в чем разница (дотошно)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]