Существует несколько различных способов получить план для запроса в SQL Developer.
Объяснить план
Кэшированный план
DBMS_XPLAN
Какой метод вы используете?Вы обрезали свою фотографию так, что мы не можем сказать, является ли это кэшированным планом из V $ SQL_PLAN или плана объяснения.
Теперь, по сути вашего вопроса - не используйте План объяснения.Это может быть ненадежным.Он показывает вам план, который можно выполнить, но не показывает фактический план, который использовался или будет использоваться.
Также отметьте это в выходных данных вашего плана -
-- это адаптивный план
Адаптивные планы в Oracle Database 12c допускают изменения во время выполнения планов выполнения.Обычно это происходит потому, что статистика лжет оптимизатору.БД считает, что существует 5 строк, но когда она читает их из индекса или таблицы, она находит 50 000 строк.Таким образом, база данных идет, к черту это, мы собираемся сделать что-то еще.
Так что мой совет -
Соберите статистику по вашим двум таблицам:
BEGIN
dbms_stats.gather_table_stats(ownname => 'HR', tabname => 'EMPLOYEES', estimate_percent => 100);
dbms_stats.gather_table_stats(ownname => 'HR', tabname => 'DEPARTMENTS', estimate_percent => 100);
END;
Затем, запустите ваши планы снова.За исключением этого времени, не используйте EXPLAIN PLAN FOR - используйте 2-й или 3-й вариант, который я показываю выше.