powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Bad plan for EXECUTE IMMEDIATE with bind varibles
5 сообщений из 5, страница 1 из 1
Bad plan for EXECUTE IMMEDIATE with bind varibles
    #39441972
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия Оракла 11
Проблема:
Есть динамический sql с большим количествои джойнов(около 10), и с фильтрацией в конце, где в фильтры передаются значения из bind varibles.
Так вот, при выполнении динамического sql Оракл строит плохой план - не в том порядке соединяет таблицы.
Если выполнить этот динамический sql как обычный(явно передав параметры фильтрации) - то все ОК. План верный.
Как решается эта проблема?

P/S Если в динамическом sql задать "правильный" порядок джойнов через хинт - то план верный.

-----------------
open your mind
...
Рейтинг: 0 / 0
Bad plan for EXECUTE IMMEDIATE with bind varibles
    #39442440
Фотография JaRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--__Александр__--явно передав параметры фильтрацииявно - это в смысле без bind-ов? А как обстоит дело с распределенностью данных в тех столбцах, на которые фильтры? Там есть перекосы?
...
Рейтинг: 0 / 0
Bad plan for EXECUTE IMMEDIATE with bind varibles
    #39442456
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaRo,
авторявно - это в смысле без bind-ов? - это когда сам подставил в динамический скл параметры и выполнил как обычный запрос.

ну поидееже он должен план строить на лету, после подстановки параметров.
Решил проблему - переписав запрос. там в bind передавались таблицы-переменный и фильтрация была реализована через джойны.
Переписал фильтрацию на AND EXISTS() - и стал строиться нормальный план.
...
Рейтинг: 0 / 0
Bad plan for EXECUTE IMMEDIATE with bind varibles
    #39442800
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--__Александр__--,

Возможно эти баги

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)

Прочитайте описание, похоже на ваш случай?
...
Рейтинг: 0 / 0
Bad plan for EXECUTE IMMEDIATE with bind varibles
    #39442811
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
--__Александр__--Решил проблему - переписав запрос. там в bind передавались таблицы-переменный и фильтрация была реализована через джойны.в смысле джойнились коллекции? По идее должно было работать нормально: https://timurakhmadeev.wordpress.com/2010/03/09/cardinality-of-table-collection-expression/#more-385
А "обычном" запросе тоже были коллекции или там просто списки были? (в этом случае понятно, почему планы разные могут быть)
трассировки 10053 для обоих запросов было бы интересно глянуть
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Bad plan for EXECUTE IMMEDIATE with bind varibles
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]