非常に迅速な見積もりの場合:
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
に関するクエリ いくつかのテーブルのビューであるため、何倍も遅くなります(ただし、フルカウントよりもはるかに高速です)。