高速なレコード件数の取得

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関数の使用を避けてまで正確な件数を取得する必要があるかは検討する必要がある。