I want to test the efficiency of this query using explain plan for.
EXPLAIN PLAN FOR (CREATE VIEW TOPTEAM AS SELECT T1.Team TEAMS, COUNT(*) TIMES FROM TeamsDivision T1 WHERE (P1.Division = 1 AND (2 = (SELECT T2.Division FROM TeamsDivision T2 WHERE (T2.Team = T1.Team AND T2.Season = (T1.Season + 1) ))) ) GROUP BY T1.Team ORDER BY TIMES DESC; SELECT TEAMS, TIMES FROM TOPTEAM WHERE ROWNUM < 6; DROP VIEW TOPTEAM); SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());
The query works without the explain plan but when I use it I get this errors:
CREATE VIEW TOPTEAM AS * ERROR at line 2: ORA-00928: missing SELECT keyword FROM TOPTEAM * ERROR at line2: ORA-00942: table or view does not exist
I used explain plan on queries without create view and they worked. I don’t know what is causing the error I have tried changing the parenthesis but I get the same errors. The only time it works is when I put explain plan before SELECT TEAMS, TIMES. Thank you!
Advertisement
Answer
The documentation of EXPLAIN PLAN
says
The EXPLAIN PLAN statement displays execution plans that the optimizer chooses for SELECT, UPDATE, INSERT, and DELETE statements.
Source: SQL Tuning Guide
You can probably fish out the execution plan of the CREATE VIEW
statement, but it will be uninteresting. Only the syntax of the query is checked, your access to the tables, and the query will be stored in USER_VIEWS
.
I guess what you want to know is the performance of the query itself. You’d do this with
EXPLAIN PLAN FOR SELECT TEAMS, TIMES FROM TOPTEAM WHERE ROWNUM < 6;