Серые строки в плане выполнения в SQL Developer выполняются? - PullRequest
2 голосов
/ 18 марта 2019

Когда я получаю план объяснения запроса, я вижу, что некоторые строки в плане серые. Как кто-то услышал, что эти серые линии на самом деле не выполнены. И я на самом деле запутался. Если база данных не будет использовать эти шаги, почему эти строки есть в плане?

Если все строки используются на самом деле, то почему для таблицы VME_SPEND_ITEM_MAR_18 два чтения?

Примечание. Этот план представляет собой план объяснения, выполняемый кнопкой плана объяснения в SQL Developer. Так что это не фактический план выполнения.

Вот изображение плана объяснения:

enter image description here

С наилучшими пожеланиями ..

1 Ответ

2 голосов
/ 18 марта 2019

Как кто-то слышал, что эти серые линии на самом деле не казнены

Потому что вы смотрите на адаптивный план - и ваш «кто-то» прав.

Другими словами, Oracle создает план выполнения для вашего запроса ... начинает его выполнять, начинает замечать, что все идет не так, как ожидалось, и на лету вносит исправления в курс.

Это грубое упрощение, но вы можете получить реальное введение в эту функцию здесь .

В вашем плане есть элемент для сбора статистики в вашей таблице - оптимизатор просмотрел данные, относящиеся к предикатам этого запроса (диапазон дат), и число строк, указанных в статистике, отключено, поэтому в этот момент оптимизатор говорит, что мы вернемся, мы пойдем другим путем.

Это новая функция для базы данных 12c, вы пометили Oracle11g, но этот план говорит нам, что мы находимся на 12.

Если вы немного прокрутите свой план в SQL Developer, вы увидите, что база данных сообщает вам, что функция адаптивного плана в игре

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...