sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik het tellen van rijen in een PostgreSQL-tabel versnellen?

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.



  1. Hoe laat je PyPy, Django en PostgreSQL samenwerken?

  2. Android SQLite-database en app-update

  3. Hoe opmerkingen toevoegen in SQL?

  4. 8 manieren om minuten toe te voegen aan een datetime in MariaDB