0

我已经看到 PostgreSQL 有几个统计信息,具体取决于每个表的 OID(如插入次数等)1。我正在寻找的是某种SELECT查询或可以总结每个表的所有内容的东西。它会是这样的:

SELECT SUM(pg_stat_get_db_tuples_returned(SELECT oid FROM pg_class)); 或类似的东西。我会在这里得到任何帮助。

4

2 回答 2

1

你是这个意思吗:

SELECT SUM(pg_stat_get_db_tuples_returned(oid))
from pg_class;
于 2012-10-23T08:07:41.290 回答
1

像这样,通过您选择的 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 所示,这是可笑的迂回。

于 2012-10-23T08:07:44.443 回答