|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
Добрый день всем! Есть странности з запросом, может кто поможет прояснить ситуацию. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Запрос выполняется за 14 секунд. Если убрать любую(!) из таблиц T1-T7 то запрос выполняется за 90-120 мс. План запросов практически одинаков, Cost отличается только на 1 (13048, 13049). Если убранную таблицу добавить в SELECT, например, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
, то тоже выполняется быстро за 100 мс. В Oracle есть какое-то ограничение по количеству связанных (JOIN) таблиц? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2021, 22:54 |
|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
SQL monitor report'ы смотрел? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 01:42 |
|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
Заодно мож обьясните зачем делать столько джоинов, а не from T, T1,....T7 where T.t1 = t1.id and...T7 = t.t7 = t7.id, если вхождение обязательное? Да даже если вхождение не обязательное есть (+) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 01:59 |
|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
SergiiW, Попробуй хинты на порядок джоинов. Делай от меньших к большим. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 06:57 |
|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
Alexander Anokhin SQL monitor report'ы смотрел? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 08:09 |
|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
crutchmaster Попробуй хинты на порядок джоинов. Делай от меньших к большим. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 08:11 |
|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
Разобрался. Oracle по разному строил порядок соединения таблиц. При добавлении 7 join он делал не оптимальный порядок. Решается хинтами. Но, обнаружил, что при разных соединениях на одном и том же запросе он строит разные планы. Один оптимальный, другой нет. И это уже не первый раз. Почему план запроса может зависить от соединения? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 08:55 |
|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
SergiiW, Версия? было много багов когда появился ANSI JOIN ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 10:29 |
|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
Vadim Lejnin, Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 10:39 |
|
JOIN на 7 таблиц
|
|||
---|---|---|---|
#18+
SergiiW, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Еще посмотрите метод соединения: use_nl (nested loops), use_hj (hash join) и index SergiiW Почему план запроса может зависить от соединения? Потому что он работает через жопу, живёт своей жизнью и считает себя умнее всех. Собственно, так всегда происходит, когда ПО пытается быть умнее того, кто на нём пишет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 11:37 |
|
|
start [/forum/topic.php?fid=52&msg=40104368&tid=1879823]: |
0ms |
get settings: |
18ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
34ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
224ms |
get tp. blocked users: |
0ms |
others: | 2630ms |
total: | 2918ms |
0 / 0 |