ホームページ >バックエンド開発 >PHPチュートリアル >オフセットと制限の最適化を使用して MySQL で合計クエリ結果をカウントするにはどうすればよいですか?
オフセットと制限を使用して MySQL で合計クエリ結果を取得する
ページネーションのシナリオでは、ページ分割の結果の合計数を決定することが重要です。 MySQL クエリを使用して、必要な合計ページ数を計算します。 1 つのアプローチでは、クエリを 2 回実行します。1 回目はページ分割された結果を取得する制限を設定し、もう 1 回目は合計行数をカウントする制限なしで実行します。ただし、このアプローチは非効率的である可能性があります。
SQL_CALC_FOUND_ROWS を入力: より最適化された解決策は、最初のクエリで SQL_CALC_FOUND_ROWS 修飾子を使用することです。この修飾子を含めることにより、MySQL は制限を適用する前に一致する行の合計数を計算します。その後、SELECT FOUND_ROWS() ステートメントを実行して合計数を取得できます。
使用法:
SQL_CALC_FOUND_ROWS を使用するには、クエリの先頭に追加するだけです。
<code class="sql">SELECT SQL_CALC_FOUND_ROWS ...</code>
クエリの実行後、次を実行して行の合計数を取得します。
<code class="sql">SELECT FOUND_ROWS();</code>
例:
としましょう。次のようなクエリがあります。
<code class="sql">SELECT * FROM `directory` WHERE `category_id` = 12 ORDER BY `name` ASC LIMIT 10 OFFSET 20;</code>
結果の合計数を計算するには、次の追加クエリを実行します。
<code class="sql">SELECT FOUND_ROWS();</code>
これにより、次のクエリの合計行数が返されます。 category_id が 12 に等しいディレクトリ テーブルを使用すると、ページネーションに必要な総ページ数を効率的に決定できます。
以上がオフセットと制限の最適化を使用して MySQL で合計クエリ結果をカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。