Kardinalitätsschätzung
Die Vermutung des Planers, wie viele Zeilen jeder Schritt liefern wird — alles andere im Plan folgt daraus.
Join-Reihenfolge, Join-Methode und Indexwahl hängen sämtlich an geschätzten Zeilenzahlen, und ein Fehler pflanzt sich multiplikativ den Join-Baum hinauf fort: ein Faktor zehn ganz unten kann oben zu einem Faktor tausend werden — und damit zu einem Hash-Join, wo ein Nested Loop Millisekunden gebraucht hätte.
Die häufigste Fehlerquelle ist die Annahme des Planers, Spalten seien unabhängig, obwohl sie es in Wirklichkeit nicht sind — Postleitzahl und Stadt, Produkt und Kategorie —, dazu Ausdrücke, die er nicht durchschaut, und Statistiken, die nie aktualisiert wurden. Gegenmittel in PostgreSQL: CREATE STATISTICS für Spaltenkombinationen und ein höheres Statistics-Target für schiefe Verteilungen.