How do you find the row count for all your tables in Postgres

前端 未结 15 2247
无人及你
无人及你 2020-11-22 12:31

I\'m looking for a way to find the row count for all my tables in Postgres. I know I can do this one table at a time with:

SELECT count(*) FROM table_name;
         


        
15条回答
  •  一个人的身影
    2020-11-22 13:10

    I wanted the total from all tables + a list of tables with their counts. A little like a performance chart of where most time was spent

    WITH results AS ( 
      SELECT nspname AS schemaname,relname,reltuples
        FROM pg_class C
        LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
        WHERE 
          nspname NOT IN ('pg_catalog', 'information_schema') AND
          relkind='r'
         GROUP BY schemaname, relname, reltuples
    )
    
    SELECT * FROM results
    UNION
    SELECT 'all' AS schemaname, 'all' AS relname, SUM(reltuples) AS "reltuples" FROM results
    
    ORDER BY reltuples DESC
    

    You could of course put a LIMIT clause on the results in this version too so that you get the largest n offenders as well as a total.

    One thing that should be noted about this is that you need to let it sit for a while after bulk imports. I tested this by just adding 5000 rows to a database across several tables using real import data. It showed 1800 records for about a minute (probably a configurable window)

    This is based from https://stackoverflow.com/a/2611745/1548557 work, so thank you and recognition to that for the query to use within the CTE

提交回复
热议问题