PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да ускоря броенето на редове в PostgreSQL таблица?

За много бърза оценка:

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 е много пъти по-бавно (макар и много по-бързо от пълното броене), тъй като това е изглед на няколко маси.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да избягате от низ, докато съвпадате с шаблон в PostgreSQL

  2. Грешка в сокета Postgresql на OSX 10.7.3 при стартиране на syncdb на Django

  3. Използване на Kubernetes за внедряване на PostgreSQL

  4. Внедряване на настройка с множество центрове за данни за PostgreSQL – част първа

  5. Изпълнение на множество екземпляри на PostgreSQL на един хост