データベース ページングでは、ページネーション コントロールをレンダリングするために合計ページ数を決定することが重要です。ただし、この目的でカウント クエリと制限クエリを個別に実行するのは非効率的になる可能性があります。この記事では、データベース制限を適用せずに結果数を取得するための改良された手法について説明します。
PostgreSQL バージョン 8.4 以降では、ウィンドウ関数が導入され、パーティション化されたサブセットに対する集計関数の計算が可能になりました。データ。これにより、合計数を決定し、単一のクエリで限定された結果を取得できます。
SELECT foo, COUNT(*) OVER() AS full_count FROM bar WHERE <some condition> ORDER BY <some col> LIMIT <pagesize> OFFSET <offset>;
ただし、この方法では、条件を満たすすべての行をカウントする必要があるため、追加のパフォーマンス オーバーヘッドが発生する可能性があり、大規模なクエリのパフォーマンスに影響を与える可能性があります。合計行数に近いテーブルまたは OFFSET 値。
パフォーマンスが低い場合懸念がある場合は、OFFSET および LIMIT アプリケーションとは関係なく、別のアプローチを使用して、影響を受ける行の最終的な数を取得できます。 Postgres の内部ブックキーピングはこの情報を追跡し、一部のクライアントがアクセスできます。
以上がLIMIT を適用する前に PostgreSQL で合計結果数を効率的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。