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

start [/forum/topic.php?fid=52&msg=39330665&tid=1887183]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 476ms |

| 0 / 0 |
