Иногда я схожу с ума по различным планам выполнения запросов в разработке, интеграционных тестах и продуктивных системах.Помимо обычного анализа, который я выполняю, я просто хочу знать:
Можно ли деактивировать некоторые операции преобразования оптимизатора запросов на системном уровне (так же, как они могут быть деактивированы на уровне для каждого запроса с помощью подсказок)?
В этом случае я ожидаю, что операция UNION ALL PUSHED PREDICATE
для запроса будет выглядеть примерно так:
SELECT ...
FROM (SELECT ... FROM A
UNION ALL
SELECT ... FROM B)
WHERE X = :B1
A
и B
- это представления, оба из которых выбираются изте же таблицы, содержащие X
, где X
- первичный ключ.Важно, что выбор для X
передается в оба вида A
и B
перед извлечением всех данных A
и B
.И это также возможно, потому что никаких сложных преобразований не требуется.
Таким образом, кроме деактивированных индексов, неверной статистики, проблемы просмотра переменных при связывании и других обычных подозрений, существует вероятность того, что весь экземпляр Oracle может простоне делать одно или два преобразования, потому что они выключены?