Voor een zeer snelle schatting:
SELECT reltuples FROM pg_class WHERE relname = 'my_table';
Er zijn echter verschillende kanttekeningen. Ten eerste, relname
is niet noodzakelijk uniek in pg_class
. Er kunnen meerdere tabellen zijn met dezelfde relname
in meerdere schema's van de database. Om eenduidig te zijn:
SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
Als u de tabelnaam niet schema-kwalificeert, een cast naar regclass
observeert het huidige search_path
om de beste match te kiezen. En als de tabel niet bestaat (of niet kan worden gezien) in een van de schema's in het search_path
krijg je een foutmelding. Zie Typen object-ID's in de handleiding.
De cast naar bigint
formatteert de real
nummer mooi, vooral voor grote tellingen.
Ook reltuples
kan min of meer verouderd zijn. Er zijn manieren om dit tot op zekere hoogte goed te maken. Zie dit later antwoord met nieuwe en verbeterde opties:
- Snelle manier om het aantal rijen van een tabel in PostgreSQL te ontdekken
En een vraag over pg_stat_user_tables
is vele malen langzamer (hoewel nog steeds veel sneller dan de volledige telling), want dat is een weergave op een paar tabellen.