/ Datenbanken

Abfragekosten Sequential Scan

Geschätzte Kosten eines vollständigen Tabellen-Scans: Kosten = Seiten · SeqSeitenKosten. SeqSeitenKosten typischerweise 1,0 in Kostenmodellen wie PostgreSQL.

Abfragekosten Sequential Scan
01 · Eingabe

Abfragekosten Sequential Scan berechnen

Geschätzte Kosten eines vollständigen Tabellen-Scans: Kosten = Seiten · SeqSeitenKosten. SeqSeitenKosten typischerweise 1,0 in Kostenmodellen wie PostgreSQL.

Lösen für
Kosten = Seiten · SeqSeitenKosten

Worum geht es?

Ein Sequential Scan liest die Heap-Datei einer Tabelle Seite für Seite linear vom Anfang bis zum Ende. Die Kosten skalieren entsprechend linear mit der Anzahl Seiten und einer konstanten Bewertung pro Seite — in PostgreSQLs Kostenmodell ist seq_page_cost als Referenzwert 1,0 normiert.

Die Formel ist der Anker, gegen den der Optimizer alle anderen Pläne misst: solange ein Index-Scan teurer wäre als ein voller Tabellen-Scan, gewinnt der Sequential Scan — und das passiert bei selektiven Abfragen über einen großen Anteil der Tabelle erstaunlich oft.

Die Formel

Formel Seq Scan
Kosten = Seiten · SeqSeitenKosten

Umstellungen:
    Seiten          = Kosten / SeqSeitenKosten
    SeqSeitenKosten = Kosten / Seiten

Die Variablen

SymbolBedeutungEinheitErklärung
SeitenSeitenanzahlAnzahl Datenseiten der Tabelle.
SeqSeitenKostenKosten pro SeiteI/O-Kosten pro sequentiell gelesener Seite.
KostenGesamtkostenGeschätzte Abfragekosten.

Minimal-Beispiel

Eine Tabelle belegt 10.000 Seiten, seq_page_cost = 1,0:

Rechnung Tabelle mit 10k Seiten
Kosten = 10 000 · 1,0
       = 10 000

Praxis-Beispiele

Beispiel 1 — Heap-Größe in Seiten umrechnen

Tabelle mit 2 GB bei 8-KiB-Seiten:

Rechnung Seitenanzahl
Seiten = 2 · 10⁹ / 8 192
       ≈ 244 140
Kosten = 244 140 · 1,0
       ≈ 244 140

Beispiel 2 — Schnellere SSDs modellieren

Auf NVMe ist sequentielles I/O ca. 4× günstiger als der Default. Setze seq_page_cost = 0,25:

Rechnung NVMe-Kostenmodell
Kosten = 244 140 · 0,25
       ≈ 61 035

Beispiel 3 — Wann lohnt sich der Index nicht mehr?

Eine 100.000-Seiten-Tabelle, Sequential-Scan-Kosten = 100.000. Ein hypothetischer Index-Scan würde 60 % der Tabelle treffen und ca. 200.000 Random-I/Os à 4,0 kosten:

Rechnung Plan-Vergleich
SeqScan-Kosten   = 100 000 · 1,0 = 100 000
IndexScan-Kosten ≈ 200 000 · 4,0 = 800 000

Optimizer wählt Sequential Scan.