|
|
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
11.2.0.3 Есть view, где джоин мастера с агрегатами по деталям. Из view выборки небольшого количества строк по ключевым полям и дополнительным фильтрам. Не сростается проброс джоина в подзапрос, если есть фильтр по коллекции. ддл Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Здесь добавлено условие и уже full scan большого индекса. изрядно тормозит. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. View это "with t", конечно же, посложнее, используется в нескольких местах (менять можно с оглядкой...). Коллекция содержит мало строк и несколько атрибутов, которые под existом сравниваются с полями view (не из testco_dtl). Как бы заставить запрос работать по ключевым полям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 04:05 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
-2-, на XE 11.2.0.2 не проталкивается даже без фильтра по коллекции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 06:08 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
Добрый день. А так ? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 09:29 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
-2-, по коллекции предикатов нет с полями из основного запроса? В принципе можно просто спрятать kokbf$ извращенно: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 10:41 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
Group by в подзапросе, потом объединение - это такой стиль ??? У каждого конечно свой стиль, но лучше не насиловать оптимизатор. Ато он план не выстроит адекватный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 11:18 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
Cristiano_Rivaldo, там скорее всего вьюха какая-нибудь, да и все прекрасно построило бы, не будь там коллекции. С этими kokbf$ вечно какая-нибудь хрень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 11:21 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
xtender, Я хотел обратить внимание на саму логику запроса (не важно есть ли во внешнем условии коллекция или нет). Что с точки зрения затрат CPU производительнее ? : 1) Индексный поиск TESTCO#GID. После для каждой записи поиск по ID в TESTCO_DTL (индекс TESTCO_DTL#PK) с последующей группировкой. Получается если INDEX RANGE SCAN TESTCO#GID вернет 5 записей - GROUP BY выполнится 5 раз. 2) Индексный поиск TESTCO#GID. Объединение по nested loop c TESTCO_DTL. Потом один общий GROUP BY (Мой вариант) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 11:39 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
-2-Здесь добавлено условие и уже full scan большого индекса. изрядно тормозит.На самом деле добавление этого подзапроса предотвращает оптимизатор от выполнения той же трансформации, что и в первом случае. Если для первого случая посмотреть 10053, то он преобразовывает inline view к lateral (ключевое слово ясное дело добавлено вручную). Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Во втором случае - нет. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Теперь во втором случае если в преобразованном запросе убрать exists, то проталкивания все равно не будет. Собственно, такая же проблема наблюдается, если "(select 1 from table(sys.odcivarchar2list('x')))" поместить в select list. Самый банальный путь, чтоб заставить оптимизатор закрыть глаза на этот подзапрос - обернуть его в функцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 11:46 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
Cristiano_RivaldoЯ хотел обратить внимание на саму логику запроса (не важно есть ли во внешнем условии коллекция или нет). Что с точки зрения затрат CPU производительнее ? : 1) Индексный поиск TESTCO#GID. После для каждой записи поиск по ID в TESTCO_DTL (индекс TESTCO_DTL#PK) с последующей группировкой. Получается если INDEX RANGE SCAN TESTCO#GID вернет 5 записей - GROUP BY выполнится 5 раз. 2) Индексный поиск TESTCO#GID. Объединение по nested loop c TESTCO_DTL. Потом один общий GROUP BY (Мой вариант)Что в лоб, что по лбу. Только во втором случае group by вместо одного поля группировки будет идти по 50 полям и по строкам, которых нет в подзаросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 11:48 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
В общем пока вариант - вынести подзапрос в select-лист. С обобщением группировки до всех полей сложнее поддерживать - там много выражений и есть вероятность, что добавится еще подзапрос с группировкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 11:53 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
-2-, может можно попробовать взять план без коллекции и зааутлайнить за запросом с коллекцией, я не точно помню доклад Ильи Деева , но там кажется был пример частичной подмены плана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 12:00 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
Vint, Не получится. Кстати, эти kokbf'ы вообще "волшебные" - даже элементарное добавление/изменение QB_name меняет алиас у них ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 12:11 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
-2-В общем пока вариант - вынести подзапрос в select-лист.Лично у меня на 11.2.0.3dbms_photoshopСобственно, такая же проблема наблюдается, если "(select 1 from table(sys.odcivarchar2list('x')))" поместить в select list. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 13:07 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
-2-, я бы попробовал (в качестве танца с боем бубном по балде ) материализовать коллекцию в темптейбл в факторинге и кардинальностью её пригнуть под плинтус ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 13:46 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop-2-В общем пока вариант - вынести подзапрос в select-лист.Лично у меня на 11.2.0.3dbms_photoshopСобственно, такая же проблема наблюдается, если "(select 1 from table(sys.odcivarchar2list('x')))" поместить в select list.вроде работает Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. orawishматериализовать коллекцию в темптейбл в факторинге и кардинальностью её пригнуть под плинтуспробовал, не получилось Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 14:06 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
-2-, можно еще недокументированный precompute_subquery вспомнить: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 15:25 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
-2-вроде работаетЯ думал "with t" крайне нежелательно менять. Соответственно я попробовал вынести в select list тот подзапрос, что в exists, чтоб в последствии по нему отфильтровать. Это по прежнему препятствовало желаемому преобразованию зароса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 17:24 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
Я так понял это баг, и его не собираются исправлять в 11g? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 12:44 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
Basil_Tsvetkov, Счас все сотрудники Оркала ломанутся тебе отвечать о планах на будущее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 14:38 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, тем более, что планы эти по отношению к БД знает всего одна милая девушка по адресу: 500 оракловская парковая аллея, берега красного дерева, калифорния 94065 и отвечающая за разработку. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 14:47 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
ДаВот, речь про Марию Колган? так она уже от оптимизатора ушла заниматься ин-мемори опцией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 14:58 |
|
||
|
План. Джоин с group by и фильтр по коллекции
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 16:03 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=38641098&tid=1883122]: |
0ms |
get settings: |
11ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 332ms |

| 0 / 0 |
