
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.10.2016, 11:20
|
|||
|---|---|---|---|
|
|||
Exists vs Left Join |
|||
|
#18+
Какой способ лучше использовать и в каких случаях лучше не использовать один из них? Код: plsql 1. 2. 3. 4. 5. или Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2016, 11:24
|
|||
|---|---|---|---|
Exists vs Left Join |
|||
|
#18+
Гость_Форума_212, Лучше использовать тот, который подходит к необходимой логике запроса, соответственно, если ни один из них не подходит, лучше их не использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2016, 11:25
|
|||
|---|---|---|---|
|
|||
Exists vs Left Join |
|||
|
#18+
Гость_Форума_212, у тебя запрос на LEFT JOIN-е реализует логиrу "NOT exists" А по теме - если данные в таблицах связаны как один-ко-кмонгим или многие-ко-многим, то результат на LEFT JOIN-е будет выдавать дублирующиеся строки, в отличии от варианта на EXISTS-подзапросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2016, 11:29
|
|||
|---|---|---|---|
|
|||
Exists vs Left Join |
|||
|
#18+
Добрый Э - Эх, Да, забыл написать not, уже сам вижу. Вопрос в том, какую конструкцию правильнее было бы использовать для отсечения, как будет выполняться быстрее и даст меньшую нагрузку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2016, 11:32
|
|||
|---|---|---|---|
|
|||
Exists vs Left Join |
|||
|
#18+
Гость_Форума_212, Во многом зависит от состава и количества данных, а также от декларированных ограничениях и схемы индексирования. Но в целом, оптимизатор сам умеет преобразовывать одно в другое через semi join [anti] если оно того стОит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2016, 11:35
|
|||
|---|---|---|---|
|
|||
Exists vs Left Join |
|||
|
#18+
Добрый Э - Эх, То есть обе записи вполне допустимы, в случае чего стоит ориентировать на контекст. Собственно, нашел хороший ответ тут . Там о том же, о чем и ты, но подробно. Спасибо, этого мне достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2016, 14:24
|
|||
|---|---|---|---|
|
|||
Exists vs Left Join |
|||
|
#18+
Добрый Э - ЭхГость_Форума_212, Но в целом, оптимизатор сам умеет преобразовывать одно в другое через semi join [anti] если оно того стОит. ИМХО , в случае соединения по комбинированному ключу (2 или больше столбца) NOT EXISTS/NOT IN может выполняться как ANTI JOIN, а вариант с LEFT OUTER JOIN ну никак не хочет и результирует в HASH JOIN + FILTER (хотя можно обойти). Regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.10.2016, 14:35
|
|||
|---|---|---|---|
Exists vs Left Join |
|||
|
#18+
Гость_Форума_212Добрый Э - Эх, Да, забыл написать not, уже сам вижу. Вопрос в том, какую конструкцию правильнее было бы использовать для отсечения, как будет выполняться быстрее и даст меньшую нагрузку. в первом запросе a.* лично я пишу exists (not exicts) мне так кажется более наглядным другое дело во что оптимизатор преобразует мой запрос ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&mobile=1&tid=1887183]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 382ms |

| 0 / 0 |
