Oracle
 sql >> Database >  >> RDS >> Oracle

GATHER_PLAN_STATISTICS non genera statistiche di base del piano

Se tutto ciò che hai eseguito fossero le due affermazioni nella tua domanda:

select /*+ gather_plan_statistics */ * from emp;

select * from table(dbms_xplan.display(FORMAT=>'ALLSTATS LAST'));

Quindi penso che il tuo problema sia l'uso di DBMS_XPLAN.DISPLAY . Il modo in cui lo stai usando, stai stampando il piano dell'ultima affermazione che hai spiegato, non l'ultima affermazione che hai eseguito. E "explain" non eseguirà la query, quindi non trarrà vantaggio da un gather_plan_statistics suggerimento.

Questo funziona per me in 12c:

select /*+ gather_plan_statistics */ count(*) from dba_objects;

SELECT *
FROM   TABLE (DBMS_XPLAN.display_cursor (null, null, 'ALLSTATS LAST'));

cioè, display_cursor invece di solo display .