我已经看到 PostgreSQL 有几个统计信息,具体取决于每个表的 OID(如插入次数等)1。我正在寻找的是某种SELECT
查询或可以总结每个表的所有内容的东西。它会是这样的:
SELECT SUM(pg_stat_get_db_tuples_returned(SELECT oid FROM pg_class));
或类似的东西。我会在这里得到任何帮助。
你是这个意思吗:
SELECT SUM(pg_stat_get_db_tuples_returned(oid))
from pg_class;
像这样,通过您选择的 stats 函数,聚合除了临时和系统目录表之外的所有表上的 stats 函数:
SELECT
sum(pg_stat_get_db_tuples_returned(c.oid))
FROM pg_catalog.pg_class c
INNER JOIN pg_namespace n ON (c.relnamespace = n.oid)
WHERE NOT (n.nspname LIKE ANY(ARRAY['pg_temp%','pg_catalog','information_schema']));
请注意,其中pg_toast
包含模式,因为我假设您希望您的统计信息包含任何 TOAST 边表。如果不这样做,请添加到排除项。pg_toast%
编辑:我正在使用构造:
(quote_ident(n.nspname)||'.'||quote_ident(c.relname))::regclass
得到表 oid,但是当它就在那里时,这很愚蠢pg_class
;如 a_horse_with_no_name 所示,这是可笑的迂回。