За много бърза оценка:
SELECT reltuples FROM pg_class WHERE relname = 'my_table';
Има обаче няколко предупреждения. Първо, relname
не е непременно уникален в pg_class
. Може да има няколко таблици с едно и също relname
в множество схеми на базата данни. За да бъдем недвусмислени:
SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
Ако не квалифицирате по схема името на таблицата, прехвърляне към regclass
наблюдава текущия search_path
за да изберете най-доброто съвпадение. И ако таблицата не съществува (или не може да се види) в някоя от схемите в search_path
получавате съобщение за грешка. Вижте Типове идентификатори на обекти в ръководството.
Прехвърлянето към bigint
форматира real
номер добре, особено за големи бройки.
Също така, reltuples
може да бъде повече или по-малко остарял. Има начини да компенсирате това до известна степен. Вижте този по-късен отговор с нови и подобрени опции:
- Бърз начин да откриете броя на редовете на таблица в PostgreSQL
И заявка към pg_stat_user_tables
е много пъти по-бавно (макар и много по-бързо от пълното броене), тъй като това е изглед на няколко маси.