von Markus Winand.

Optimizer - Query Optimizer - Query Planner


Der Optimizer (Oracle), Query Optimizer (SQL Server, MySQL) oder Query Planner (PostgreSQL) übersetzt eine SQL-Anweisung in ein ausführbares Programm (Ausführungsplan).

Generell gibt es zwei Typen:

Regelbasierte Optimizer - Rule Based Optimizer (RBO)

Regelbasierte Optimizer befolgen ein Regelwerk, um einen Ausführungsplan zu erstellen. Zum Beispiel: Wenn möglich, immer einen Index verwenden.

Kostenbasierte Optimizer - Cost Based Optimizer (CBO)

Kostenbasierte Optimizer erstellen alle möglichen Ausführungsplan Varianten, wenden ein Kostenmodell auf jede Variante an und wählen schlussendlich die Variante mit den besten Kosten.

Kostenbasierte Optimizer vergleichen zum Beispiel die Kosten eines Ausführungsplanes mit Index zu denen eines Ausführungsplanes ohne Index (voller Tabellenzugriff). Der Optimizer wählt den vollen Tabellenzugriff, wenn die Kosten besser als beim Index Zugriff sind.

Die meisten Optimizer sind kostenbasierte Optimizer.

Die Hauptaufgaben des Optimizers sind:

  • Die Auswahl des Join Algorithmus und der Join Reihenfolge

  • Die Verwendung von Indizes

Optimizer sind nicht zuständig für:

  • Optimierung von Tabellen oder Indizes

  • Optimierung von verstümmeltem SQL

  • Daten Defragmentierung

Links

Über den Autor

Foto von Markus Winand

Markus Winand lehrt effizientes SQL – inhouse und online. Er minimiert die Entwicklungszeit durch modernes SQL und optimiert die Laufzeit durch schlaue Indizierung – dazu hat er auch das Buch SQL Performance Explained veröffentlicht.

Kaufen Sie sein Buch bei Amazon

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Bei Amazon kaufen
(Taschenbuch)

Taschenbuch und PDF auch auf Markus' Webseite erhältlich.

Holen Sie sich Markus

…für ein Training ins Büro.

Sein beliebtes Training stimmt Entwickler auf SQL Performance ein.

Erfahren Sie mehr»

„Use The Index, Luke!“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz | CC-BY-NC-ND 3.0 Lizenz