W Oracle można podejrzeć plan wykonania komendy SQL na 2 sposoby:
Warto pamiętać, że EXPLAIN PLAN FOR pokazuje hipotetyczny plan wykonania. Bazuje on, oczywiście na statystykach i metadanych odczytanych z bazy danych. Jest bardzo prawdopodobny, ale nigdy nie został wykonany.
W V$SQL_PLAN, dla odmiany, znajdują się plany wykonania faktycznie użyte do wykonania komendy SQL.
Kiedy ta różnica jest najbardziej istotna ? Wtedy kiedy używamy zmiennych wiązanych. Optymalizator wie, wg jakich kolumn wynik komendy SQL będzie ograniczany. Ale nie zna wartości, które będą podstawione pod zmienne wiązane. W związku z tym nie może, ze 100% trafnością, zdecydować o użyciu indeksu lub jego nie używaniu.
Dopiero faktyczne wykonanie komendy SQL z podstawionymi pod zmienne wartościami spowoduje wygenerowanie i wykonanie optymalnego planu. Będzie on wtedy dostępny w V$SQL_PLAN.
W przypadku systemów hurtownianych, gdzie częstotliwość komend SQL jest stosunkowo niska, używanie zmiennych wiązanych nie zawsze wiąże się ze wzrostem wydajności. O tyle w systemach OLTP używanie zmiennych wiązanych bardzo wydajność poprawia.
Do uzyskania raportu o planie wykonania służy pakiet DBMS_XPLAN i jego dwie podstawowe funkcje:
Można ich użyć w, na przykład, taki sposób:
select * from table(dbms_xplan.display);
Pakiet DBMS_XPLAN dysponuje znacznie większymi możliwościami niż, jedynie, powyższe. Oprócz wymienionych źródeł może sięgać, również po plany wykonania do:
Czego Ty używasz do generowania planów wykonania ?