Für eine sehr schnelle Schätzung:
SELECT reltuples FROM pg_class WHERE relname = 'my_table';
Es gibt jedoch mehrere Vorbehalte. Zum einen relname
ist in pg_class
nicht unbedingt eindeutig . Es kann mehrere Tabellen mit demselben relname
geben in mehreren Schemas der Datenbank. Um eindeutig zu sein:
SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
Wenn Sie den Tabellennamen nicht schemaqualifizieren, erfolgt eine Umwandlung in regclass
beobachtet den aktuellen search_path
um die beste Übereinstimmung auszuwählen. Und wenn die Tabelle in keinem der Schemas im search_path
existiert (oder nicht gesehen werden kann). du bekommst eine fehlermeldung. Siehe Objektkennungstypen im Handbuch.
Die Umwandlung in bigint
formatiert den real
Nummer schön, besonders für große Zählungen.
Auch reltuples
können mehr oder weniger veraltet sein. Es gibt Möglichkeiten, dies bis zu einem gewissen Grad auszugleichen. Siehe diese spätere Antwort mit neuen und verbesserten Optionen:
- Schneller Weg, um die Zeilenanzahl einer Tabelle in PostgreSQL zu ermitteln
Und eine Abfrage auf pg_stat_user_tables
ist um ein Vielfaches langsamer (aber immer noch viel schneller als die vollständige Zählung), da dies eine Ansicht auf ein paar Tabellen ist.