Просто прошу некоторых пояснений относительно разницы между 2. Насколько я понимаю, EXPLAIN PLAN дает вам теоретический план выполнения, в то время как DBMS_XPLAN.DISPLAY_CURSOR дает вам фактический план выполнения со статистикой выполнения для заявление.
EXPLAIN PLAN сохраняет эти данные в PLAN_TABLE, в то время как DBMS_XPLAN использует представления V $ SQL_PLAN, V $ SQL_PLAN_STATISTICS и V $ SQL_PLAN_STATISTICS_ALL для своей информации.
Однако, чтобы DISPLAY_CURSOR собирал фактическую статистику времени выполнения для этого состояния, необходимо установить подсказку / * + gather_plan_statistics * /
. В противном случае заполняется только V $ SQL_PLAN, который предоставит вам только план выполнения, но не фактическую статистику выполнения. Это только с / * + gather_plan_statistics * /
, где заполняется V $ SQL_PLAN_STATISTICS.
Итак, мой вопрос: если я не использую подсказку gather_plan_statistics, всегда ли EXPLAIN PLAN и DISPLAY_CURSOR будут давать мне один и тот же план выполнения (для одного и того же оператора)?