For et meget hurtigt skøn:
SELECT reltuples FROM pg_class WHERE relname = 'my_table';
Der er dog flere forbehold. For det første relname
er ikke nødvendigvis unik i pg_class
. Der kan være flere tabeller med det samme relname
i flere skemaer i databasen. For at være utvetydig:
SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
Hvis du ikke skemakvalificerer tabelnavnet, en cast til regclass
observerer den aktuelle search_path
at vælge det bedste match. Og hvis tabellen ikke findes (eller ikke kan ses) i nogen af skemaerne i search_path
får du en fejlmeddelelse. Se Objektidentifikatortyper i manualen.
Castet til bigint
formaterer den real
tal pænt, især for store tæller.
Også reltuples
kan være mere eller mindre forældet. Der er måder at kompensere for dette til en vis grad. Se dette senere svar med nye og forbedrede muligheder:
- Hurtig måde at opdage rækkeantallet i en tabel i PostgreSQL
Og en forespørgsel på pg_stat_user_tables
er mange gange langsommere (dog stadig meget hurtigere end fuld optælling), da det er en visning på et par borde.