PostgreSQL 统计所有数据表各自的总行数
生活随笔
收集整理的這篇文章主要介紹了
PostgreSQL 统计所有数据表各自的总行数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一般來說,可以使用 count(*) 來獲取具體某張表的總行數:
SELECT count(0) FROM t_user;如果想獲得所有表的行數信息,可以使用以下 SQL 語句:
SELECTrelname,reltuples FROMpg_classCLS LEFT JOIN pg_namespace N ON ( N.oid = CLS.relnamespace ) WHEREnspname NOT IN ( 'pg_catalog', 'information_schema' )AND relkind = 'r' ORDER BYreltuples DESC;該語句執行非常迅速,但不太精準,用于數據規模估算時非常有用。
更精確的計算方法是創建一個函數來實現統計功能:
CREATE TYPE table_count AS (table_name TEXT, num_rows INTEGER);CREATE OR REPLACE FUNCTION count_em_all () RETURNS SETOF table_count AS ' DECLAREthe_count RECORD;t_name RECORD;r table_count%ROWTYPE;BEGINFOR t_name INSELECTc.relnameFROMpg_catalog.pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespaceWHEREc.relkind = ''r''AND n.nspname = ''public''ORDER BY 1LOOPFOR the_count IN EXECUTE ''SELECT COUNT(*) AS "count" FROM '' || t_name.relnameLOOPEND LOOP;r.table_name := t_name.relname;r.num_rows := the_count.count;RETURN NEXT r;END LOOP;RETURN; END; ' LANGUAGE plpgsql;這段代碼創建了一個名為 count_em_all 的函數,調用該函數即可獲得準確的統計信息。需要注意的是,如果數據庫中數據較多,該函數執行時會消耗更多的時間:
SELECT* FROMcount_em_all ( ) AS r ORDER BYr.num_rows DESC;總結
以上是生活随笔為你收集整理的PostgreSQL 统计所有数据表各自的总行数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 集成开放平台标准化连接器之基于OAS3.
- 下一篇: 如何优化 .NET Core 中的 la