高速なレコード件数の取得
PostgreSQLで大量のレコードを含むテーブルでcount
関数を使って件数取得すると時間がかかる。
SELECT count(*) FROM テーブル名;
統計情報ビューの一種であるpg_stat_user_tables
を使うと高速にレコード件数を取得できる。
SELECT n_live_tup FROM pg_stat_user_tables WHERE relname='テーブル名' AND schemaname='public';
注意点
大量のレコードを追加したり削除したりすると上記SQLで取得できる件数情報は正確でない可能性がある。
その場合はANALYZE
コマンドを実行して統計情報を更新する。
ANALYZE テーブル名;
ただしANALYZE
コマンドも時間がかかるため、count
関数の使用を避けてまで正確な件数を取得する必要があるかは検討する必要がある。
\第一線のプログラマーの行動原理を学べる!/