PostgreSQLでDBの各テーブルのレコード数を一覧で確認したいとき | ヘビィ・SMD!

ヘビィ・SMD!

そんな・・・バナナ!!
1. 甘え度+10 恐れ度+10 寿命-1週間
2. 甘え度+10 恐れ度-10
3. 甘え度-10 恐れ度-10 寿命+1週間

「○○案件の本番DBの中身ってさ、一体今どれくらいレコード詰まってるんだろうね?一覧でわかったりしない?」

部長に言われたが、即答は出来なかったので調べてみた。
「各テーブルのレコード数を個別に」確認するには
SELECT COUNT(*) FROM テーブル名;
とすればいい、というのは誰もが知っている事実。
でも今は「全てのテーブルのレコード件数が知りたい」のである。

まずは結論から。
こうすれば良い。
/** SELECT T2.relname , T2.reltuples FROM pg_stat_user_tables AS T1 INNER JOIN pg_class AS T2 ON T1.relname = T2.relname ORDER BY T2.relname; **/


システムテーブル(ビューか?)pg_stat_user_tablesとpg_classを使っている。
それぞれの詳しい説明はドキュメントを詳しく読んで下さい。

pg_stat_user_tablesを使う事で、ユーザーが作成したテーブルのみを対象としている。
これを指定していないとシステムテーブルとかが結果に入ってきて見にくくなるからね。

ひとつ注意すべき点は、reltuplesが
Number of rows in the table. This is only an estimate used by the planner. It is updated by VACUUM, ANALYZE, and a few DDL commands such as CREATE INDEX
つまり、「だいたいの数値であって正しいとは限らないぜ」ってトコ。
正確な数値が必要な場合は別の対処法をとる必要がありますが、今回は大体でよかったのでコレデヨシ。

今週は玉ねぎをたっぷり使ったカレーを作ろうとおもいます。