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

次のように、統計関数を選択すると、一時テーブルとシステム カタログ テーブルを除くすべてのテーブルで統計関数が集計されます。

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']));

統計にTOASTサイドテーブルを含める必要があると思われるため、これにはpg_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 に答える