Database Reference
In-Depth Information
SQL> alter session set statistics_level=all;
Session altered.
SQL> select /*+ index(t1 i_t1) */ count(b) from test1.t1 where a is not null;
COUNT(B)
----------
10000
SQL> select plan_table_output from table (sys.dbms_xplan.display_cursor('','','ALLSTATS
LAST'));
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
------------------
SQL_ID 1qu2dvu86558x, child number 0
-------------------------------------
select /*+ index(t1 i_t1) */ count(b) from test1.t1 where a is not null
Plan hash value: 2575626123
----------------------------------------------------------------------------------------------
-
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers
|
----------------------------------------------------------------------------------------------
-
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.16 | 2121
|
| 1 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.16 | 2121
|
| 2 | TABLE ACCESS BY INDEX ROWID| T1 | 1 | 10000 | 10000 |00:00:00.14 | 2121
|
|* 3 | INDEX FULL SCAN | I_T1 | 1 | 10000 | 10000 |00:00:00.03 | 21
|
----------------------------------------------------------------------------------------------
-
P.: „ Hei, sie sind in der Tat gleich dem CF: 2121 − 21 = 2100.
L.: „ Die letzte Ausgabe ist zugleich ein Beispiel der Performanz-Probleme bei einem gro-
ßen CF: der Index-Scan macht wenige Block-Zugriffe, die jeweiligen Tabellenzugriffe über die
ROWID benötigen aber ziemlich viele. Sehr oft werden in den praktischen Fällen die jeweili-
gen Tabellenblöcke von der Festplatte gelesen.
P.: „ Kann man etwas dagegen unternehmen?
L.: „ Leider ist es sehr schwierig. Der CF ändert sich, wenn die Tabellendaten anders ab-
gespeichert sind. In [ 21 ] wurden beispielsweise gravierende Differenzen von CF festgestellt,
wenn man die Anzahl der Free Lists der Tabelle ändert oder die Tabelle in einem ASSM
Tablespace plaziert. Es gibt aber keine Methoden, die auf dieser Basis garantiert den CF re-
duzieren. Die einzig sichere Methode besteht darin, dass die Daten sortiert wie im jeweiligen
Index in die Tabelle eingetragen werden.
Search WWH ::




Custom Search