获取所有表的PostgreSQL统计信息?

时间:2012-10-23 07:53:31

标签: postgresql statistics

我已经看到PostgreSQL有几个statistics,取决于每个表的OID(如插入数量等)1。 我正在寻找的是某种SELECT查询或某种能够为每张表总结一切的东西。 它会是这样的:

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

2 个答案:

答案 0 :(得分:1)

你的意思是:

SELECT SUM(pg_stat_get_db_tuples_returned(oid))
from pg_class;

答案 1 :(得分: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所示。