TABLESAMPLE wählt keine Zeilen, sondern Adressen – und das verzerrt die Ergebnisse

Tablesample Picks Rows

TABLESAMPLE wählt keine Zeilen, sondern Adressen – und das verzerrt die Ergebnisse

Postgres' TABLESAMPLE verspricht schnelle Stichproben, doch die Methode SYSTEM wählt ganze Seiten statt einzelner Zeilen. Bei zeitlich sortierten Daten wie einer orders-Tabelle liefert eine 1%-Stichprobe für min(created_at) Werte, die bis zu fünf Stunden danebenliegen – und das bei nur 177 statt 18.085 gelesenen Seiten. BERNOULLI ist präziser, aber langsamer. Wer stabile Teilmengen braucht, sollte stattdessen den Primärschlüssel hashen.

Alles Seltsame an TABLESAMPLE rührt von einer Tatsache her: Es wählt keine Zeilen, es wählt Adressen.

Mehr von diesem Tag

2026-10-25