「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PostgreSQLに制限を適用する前に、合計行数を効率的に取得する方法は?

PostgreSQLに制限を適用する前に、合計行数を効率的に取得する方法は?

2025-03-23に投稿されました
ブラウズ:415

How to Efficiently Get Total Row Count Before Applying LIMIT in PostgreSQL?

limit applicationの前に結果カウントを決定する最良の方法

データベースクエリで、制限を適用する前に結果の総数を決定することはページネーションに重要です。現在、一般的なアプローチでは、クエリを2回実行することが含まれます。1回の結果をカウントし、再度制限で目的のページを取得します。ただし、この方法は非効率的です。ウィンドウ関数を使用することにより、合計結果カウントと限られた結果の両方を単一のクエリで取得できます。

select foo 、count(*)over()as Full_count バーから ここで、

による注文 を制限します offset ;
SELECT foo
     , count(*) OVER() AS full_count
FROM   bar
WHERE  
ORDER  BY 
LIMIT  
OFFSET ;

ウィンドウ関数に加えて、影響を受ける行数を取得するための代替方法があります:

plpgsql

:診断integer_var = row_count;
  1. php
  2. pg_num_rows
  3. これらの方法は、制限アプリケーションの前に完全なカウントではなく、クエリの影響を受ける行の数を提供します。テーブル](https://dba.stackexchange.com/questions/128089/optimize-query-with offset-on-large-table)
[バッチクエリの影響を受ける行の数を計算しますpostgreSql](https://stackoverflow.com/questions/4644316/calculate-number-lows-by-by-bat-query-in-postgresql)

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3