Oracle – Performance einer Query messen

Vielleicht möchte man wissen, warum eine Query so lang braucht. Vielleicht aber auch im vorraus, wie lang eine Query brauchen wird.

Hier kommt der Befehl Explain plan in Spiel.

Mit explain plan for SELECT * FROM TABLE_NAME wird ein Ausführungsplan für die Query SELECT * FROM TABLE erstellt.

Wie dieses Statement ausgeführt wird, erfährt man dann mit dem Statement select * from table(dbms_xplan.display);

Das Ergebnis einer komplexeren Query könnte dann folgendermaßen aussehen:
QUERY: select count(*) from TABLE where timestamp > to_date('2013/12/31', 'yyyy/mm/dd') and timestamp < sysdate-90 and processid not in (select processid from TABLE2 where timestamp > to_date('2013/12/31', 'yyyy/mm/dd'));*/

PLAN_TABLE_OUTPUT
————————————————————————————————————————————————————————————————————————————————————————————————————
Plan hash value: 1699373764

————————————————————————————————————–
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
————————————————————————————————————–
| 0 | SELECT STATEMENT | | 1 | 41 | | 20909 (1)| 00:03:51 |
| 1 | SORT AGGREGATE | | 1 | 41 | | | |
|* 2 | FILTER | | | | | | |
|* 3 | HASH JOIN ANTI | | 2117 | 86797 | 6624K| 20909 (1)| 00:03:51 |
|* 4 | VIEW | index$_join$_001 | 211K| 4135K| | 5826 (1)| 00:01:05 |
|* 5 | HASH JOIN | | | | | | |
|* 6 | INDEX RANGE SCAN | TABLE | 211K| 4135K| | 695 (1)| 00:00:08 |
| 7 | INDEX FAST FULL SCAN| SYS_C0036157 | 211K| 4135K| | 4496 (1)| 00:00:50 |
|* 8 | TABLE ACCESS FULL | TABLE2 | 1341K| 26M| | 12473 (1)| 00:02:18 |
————————————————————————————————————–

Predicate Information (identified by operation id):
—————————————————

2 – filter(TIMESTAMP‘ 2013-12-31 00:00:00′TIMESTAMP‘ 2013-12-31 00:00:00′)
5 – access(ROWID=ROWID)
6 – access(„TIMESTAMP“>TIMESTAMP‘ 2013-12-31 00:00:00′ AND „TIMESTAMP“TIMESTAMP‘ 2013-12-31 00:00:00′)

TO BE Continued

Dieser Beitrag wurde unter Allgemein, Oracle abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.