Aby uzyskać bardzo szybkie oszacowanie:
SELECT reltuples FROM pg_class WHERE relname = 'my_table';
Istnieje jednak kilka zastrzeżeń. Po pierwsze, relname
niekoniecznie jest unikalny w pg_class
. Może istnieć wiele tabel z tym samym relname
w wielu schematach bazy danych. Aby być jednoznacznym:
SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
Jeśli nie kwalifikujesz nazwy tabeli według schematu, rzutuj na regclass
obserwuje bieżącą search_path
wybrać najlepsze dopasowanie. A jeśli tabela nie istnieje (lub nie można jej zobaczyć) w żadnym ze schematów w search_path
otrzymasz komunikat o błędzie. Zobacz Typy identyfikatorów obiektów w instrukcji.
Rzut na bigint
formatuje real
liczba ładnie, szczególnie dla dużych liczb.
Również reltuples
mogą być mniej lub bardziej nieaktualne. Są sposoby, aby to do pewnego stopnia nadrobić. Zobacz tę późniejszą odpowiedź z nowymi i ulepszonymi opcjami:
- Szybki sposób na sprawdzenie liczby wierszy tabeli w PostgreSQL
I zapytanie na pg_stat_user_tables
jest wielokrotnie wolniejszy (choć nadal znacznie szybszy niż pełna liczba), ponieważ jest to widok na kilka tabel.