Para um orçamento muito rápido:
SELECT reltuples FROM pg_class WHERE relname = 'my_table';
Existem várias ressalvas, no entanto. Por um lado,
relname
não é necessariamente único em pg_class
. Pode haver várias tabelas com o mesmo relname
em vários esquemas do banco de dados. Para ser inequívoco:SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
Se você não qualificar o nome da tabela pelo esquema, uma conversão para
regclass
observa o search_path
atual para escolher o melhor jogo. E se a tabela não existir (ou não puder ser vista) em nenhum dos esquemas no search_path
você recebe uma mensagem de erro. Consulte Tipos de identificador de objeto no manual. A conversão para
bigint
formata o real
número bem, especialmente para grandes contagens. Além disso,
reltuples
pode estar mais ou menos desatualizado. Existem maneiras de compensar isso até certo ponto. Veja esta resposta posterior com opções novas e aprimoradas:- Maneira rápida de descobrir a contagem de linhas de uma tabela no PostgreSQL
E uma consulta em
pg_stat_user_tables
é muitas vezes mais lento (embora ainda muito mais rápido que a contagem total), pois é uma visão em algumas tabelas.