非常に迅速な見積もりの場合:
SELECT reltuples FROM pg_class WHERE relname = 'my_table';
ただし、いくつかの注意点があります。 1つは、relname pg_classでは必ずしも一意ではありません 。同じrelnameを持つ複数のテーブルが存在する可能性があります データベースの複数のスキーマで。明確にするために:
SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
テーブル名をスキーマ修飾しない場合は、regclassにキャストします 現在のsearch_pathを監視します 最適なものを選択します。また、search_pathのどのスキーマにもテーブルが存在しない(または表示されない)場合 エラーメッセージが表示されます。 オブジェクト識別子の種類を参照してください マニュアルで。
bigintへのキャスト realをフォーマットします 特に大きなカウントの場合は、うまく数えます。
また、reltuples 多かれ少なかれ時代遅れになる可能性があります。これをある程度補う方法があります。新しく改善されたオプションを使用して、この後の回答を参照してください:
- PostgreSQLでテーブルの行数をすばやく検出する方法
そして、pg_stat_user_tablesに関するクエリ いくつかのテーブルのビューであるため、何倍も遅くなります(ただし、フルカウントよりもはるかに高速です)。