PrinzipDer Oracle Optimierer hat die Aufgabe für jeden SQL-Befehl, der ausgeführt wird einen Ausführungsplan zu erstellen. Prinzipiell gibt es zwei unterschiedliche Modi: regelbasiert oder kostenbasiert. Der regelbasierte Optimierer geht nach starren Regeln vor und lässt sich durch den Aufbau des SQL-Befehls beeinflussen. So spielt z.B. die Reihenfolge der Tabellen in der From-Klausel eines Select-Befehls eine entscheidende Rolle. Der kostenbasierte Optmierer benötigt Analysedaten um sinnvoll arbeiten zu können. Diese Daten geben Aufschluss über die Größen der beteiligten Tabellen sowie über die Selektivität der vorhandenen Indizes. Durch die Verwendung dieser Daten ist der kostenbasierte Optimierer dem regelbasierten im Allgemeinen deutlich überlegen. Es kommt nicht selten vor, dass komplexe SQL-Abfragen mit dem kostenbasierten Optimierer und aktuellen Analysedaten um Faktoren schneller ablaufen. Optimierer-ModiRULEDer Ausführungsplan wird durch eine festgelegte Prioritätenvergabe gesteuert ALL_ROWSKostenbasierter Ansatz mit dem Ziel den besten Durchsatz für das Gesamtergebnis zu erzielen FIRST_ROWKostenbasierter Ansatz mit dem Ziel eine möglichst schnelle Antwortzeit zu erreichen CHOOSEFür jeden Befehl wird zwischen RULE und ALL_ROWS entschieden (default auch ohne Eintrag
in init<SID>.ora): Einstellung des Optimierer-Modus
Stichwörter Datenbank database Optimierer Optimizer Mode Modus RULE ALL_ROWS CHOOSE FIRST_ROW kostenbasiert kostenbasierter cost based regelbasiert regelbasierter rule based |