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

Über den Autor

Photo of Markus Winand
Markus Winand stimmt Entwickler auf SQL-Performance ein. Er hat das Buch SQL Performance Explained veröffentlicht und bietet inhouse Schulungen sowie Tuning-Leistungen auf http://winand.at/ an.

?Recent questions at
Ask.Use-The-Index-Luke.com

0
votes
0
answers
95
views

Join with inequalities only

2 days ago Markus Winand ♦♦ 936
inequality join
0
votes
1
answer
352
views

PostgreSQL Scripts: Performance Testing and Scalability problem and question

Nov 12 at 14:53 Markus Winand ♦♦ 936
testing postgresql scalability
0
votes
1
answer
976
views

PostgreSQL Bitmap Heap Scan on index is very slow but Index Only Scan is fast

Oct 31 at 11:31 Markus Winand ♦♦ 936
index postgresql postgres sql