sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLテーブルの行のカウントを高速化するにはどうすればよいですか?

    非常に迅速な見積もりの​​場合:

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



    1. ORA-00900を解決する方法

    2. Django + Python 3+PostgreSQLをAWSElasticBeanstalkにデプロイする

    3. 日付と時刻で降順で並べ替えますか?

    4. データベース設計のステップは何ですか?