【PostgreSQL】PostgreSQL ~ 統計情報 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2023/03/02/230435

で、以前、テーブル情報を取得したが
今回は、PostgreSQLの統計情報系についてまとめてみる

目次

【1】pg_catalog スキーマ
 1)pg_statio_all_tables
 2)pg_description
【2】information_schema スキーマ

【1】pg_catalog スキーマ

https://www.postgresql.jp/document/14/html/catalogs.html

システムカタログとは、
リレーショナルデータベース管理システムがテーブルや列の情報などの
スキーマメタデータと内部的な情報を格納する場所です。

1)pg_statio_all_tables

* 現在のデータベース内のテーブルごとに1行の形で、
 特定のテーブルに対するI/Oに関する統計情報

https://www.postgresql.jp/document/10/html/monitoring-stats.html
詳細内容
https://www.postgresql.jp/document/10/html/monitoring-stats.html#PG-STATIO-ALL-TABLES-VIEW

2)pg_description

* 各データベースオブジェクトに対して付けられたオプションの補足説明(コメント)を格納

https://www.postgresql.jp/docs/9.4/catalog-pg-description.html

【2】information_schema スキーマ

* PostgreSQL/Redshiftだけでなく、他のDBでも使えるらしい

https://www.postgresql.jp/document/8.1/html/information-schema.html

https://postgresweb.com/system-catalog-and-information-schema

-- スキーマ一覧
select * from information_schema.schemata;

-- テーブル一覧
select * from information_schema.tables;

-- ビュー一覧
select * from information_schema.views;

-- 項目一覧
select * from information_schema.columns;

-- トリガー一覧
select * from information_schema.triggers;

【3】サンプル

例1:テーブルおよびコメント一覧表示

SELECT
  c.table_schema,
  c.table_name,
  c.column_name,
  d.description
FROM
  pg_catalog.pg_statio_all_tables AS st
INNER JOIN
  pg_catalog.pg_description AS d
ON
  d.objoid = st.relid
RIGHT JOIN
  information_schema.columns AS c
ON
  d.objsubid = c.ordinal_position
  AND c.table_schema = st.schemaname
  AND c.table_name = st.relname
LIMIT
  10
;

関連記事

PostgreSQL ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2014/03/08/000100
PostgreSQL ~ テーブル情報を取得するには ~
https://dk521123.hatenablog.com/entry/2023/03/02/230435
Amazon Redshift ~ システムビュー ~
https://dk521123.hatenablog.com/entry/2023/03/06/184928
dbt ~ Hooks ~
https://dk521123.hatenablog.com/entry/2023/12/11/040122