|
|
|
Bad plan for EXECUTE IMMEDIATE with bind varibles
|
|||
|---|---|---|---|
|
#18+
Версия Оракла 11 Проблема: Есть динамический sql с большим количествои джойнов(около 10), и с фильтрацией в конце, где в фильтры передаются значения из bind varibles. Так вот, при выполнении динамического sql Оракл строит плохой план - не в том порядке соединяет таблицы. Если выполнить этот динамический sql как обычный(явно передав параметры фильтрации) - то все ОК. План верный. Как решается эта проблема? P/S Если в динамическом sql задать "правильный" порядок джойнов через хинт - то план верный. ----------------- open your mind ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 05:58 |
|
||
|
Bad plan for EXECUTE IMMEDIATE with bind varibles
|
|||
|---|---|---|---|
|
#18+
--__Александр__--явно передав параметры фильтрацииявно - это в смысле без bind-ов? А как обстоит дело с распределенностью данных в тех столбцах, на которые фильтры? Там есть перекосы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 17:04 |
|
||
|
Bad plan for EXECUTE IMMEDIATE with bind varibles
|
|||
|---|---|---|---|
|
#18+
JaRo, авторявно - это в смысле без bind-ов? - это когда сам подставил в динамический скл параметры и выполнил как обычный запрос. ну поидееже он должен план строить на лету, после подстановки параметров. Решил проблему - переписав запрос. там в bind передавались таблицы-переменный и фильтрация была реализована через джойны. Переписал фильтрацию на AND EXISTS() - и стал строиться нормальный план. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 17:26 |
|
||
|
Bad plan for EXECUTE IMMEDIATE with bind varibles
|
|||
|---|---|---|---|
|
#18+
--__Александр__--, Возможно эти баги Bug 11657903 Wrong results / unstable Exec Plan / ORA-979 from SQL using positional binds in PL/SQL - superseded Bug 16625010 - SQL Plan Baseline not working for SQL called from PL/SQL - superseded (Doc ID 16625010.8) Bug 18961555 - Static PL/SQL baseline reproduction broken by fix for bug 18020394 (Doc ID 18961555.8) Прочитайте описание, похоже на ваш случай? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2017, 23:51 |
|
||
|
Bad plan for EXECUTE IMMEDIATE with bind varibles
|
|||
|---|---|---|---|
|
#18+
--__Александр__--Решил проблему - переписав запрос. там в bind передавались таблицы-переменный и фильтрация была реализована через джойны.в смысле джойнились коллекции? По идее должно было работать нормально: https://timurakhmadeev.wordpress.com/2010/03/09/cardinality-of-table-collection-expression/#more-385 А "обычном" запросе тоже были коллекции или там просто списки были? (в этом случае понятно, почему планы разные могут быть) трассировки 10053 для обоих запросов было бы интересно глянуть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2017, 03:09 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39441972&tid=1886055]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 481ms |

| 0 / 0 |
