PostgreSQLには、すべてのテーブルのOID(挿入の数など)に応じていくつかの統計があることがわかりました1。私が探しているのは、ある種のSELECT
クエリか、すべてのテーブルのすべてを合計するものです。次のようになります。
SELECT SUM(pg_stat_get_db_tuples_returned(SELECT oid FROM pg_class));
またはそのようなもの。ここで助けていただければ幸いです。
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;
次のように、統計関数を選択すると、一時テーブルとシステム カタログ テーブルを除くすべてのテーブルで統計関数が集計されます。
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 で示されているように、途方もなく回り道です。