ホームページ  >  記事  >  バックエンド開発  >  オフセットと制限の最適化を使用して MySQL で合計クエリ結果をカウントするにはどうすればよいですか?

オフセットと制限の最適化を使用して MySQL で合計クエリ結果をカウントするにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-23 13:08:30527ブラウズ

How to Count Total Query Results in MySQL with Offset and Limit Optimization?

オフセットと制限を使用して 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。