| Table-Scan | Eher schlecht, außer bei kleinen Tabellen | |
| Rowid-Access | File-Nr + Block-Nr + Row-Nr (AAAB0?..) | |
| Index-Lookup | Bevorzugte Methode bei großen selektiven Tabellen | |
| Hash Key Access | Schnelle Zugriffsmethode bei großen Tabellen |
| Regelbasiert | eher veraltet | |
| Kostenbasiert | aktuell und möglichst zu bevorzugen |
| CHOOSE | Cost, wenn Tabellen analysiert sind. Rule, wenn Tabellen nicht analysiert sind. | |
| RULE | Es wird immer Rule verwendet. | |
| ALL_ROWS | Cost, optimiert für die Rückgabe aller Datensätze der Ergebnismenge. | |
| FIRST_ROWS | Cost, optimier für die Rückgabe des ersten Datensatzes der Ergebnismenge. |
Standard ist CHOOSE. Feststellen läßt sich die Einstellung mit
show parameters;Ändern in der init.ora oder mit
ALTER SESSION SET OPTMIZER_GOAL=RULE;
SELECT /*+RULE*/ employeeid FROM employees;
SELECT /*+ALL_ROWS*/ employeeid FROM employees;
analyze table employees compute statistics;
analyze table employees estimate statistics sample 10 percent,
analyze table employees delete statistics;
Auf Quantity steht ein Index ->Wenig selektiv.
select /*+RULE*/ * from order_details where quantity=10; select /*+ALL_ROWS*/ * from order_details where quantity=10; analyze table order_details compute statistics; select /*+RULE*/ * from order_details where quantity=10; select/*+ALL_ROWS*/ * from order_details where quantity=10;
--Es wird ein Datensatz mit Quantity=30 hinzugefügt insert into order_details values(11000,10,10,30,0); select /*+RULE*/ * from order_details where quantity=10; select /*+RULE*/ * from order_details where quantity=30; select /*+ALL_ROWS*/ * from order_details where quantity=10; select /*+ ALL_ROWS */ * from order_details where quantity=30;
--Erstellen eines Histogramms analyze table order_details compute statistics for columns quantity size 10 ; select /*+RULE*/ * from order_details where quantity=10; select /*+RULE*/ * from order_details where quantity=30; select /*+ALL_ROWS*/ * from order_details where quantity=10; select /*+ ALL_ROWS */ * from order_details where quantity=30;
Stefan Hietel dama.go GmbH, Robert Warnke http://rowa.giso.de