ホームページ > データベース > mysql チュートリアル > LIMIT と OFFSET を使用しているときに MySQL ページネーションで合計結果数を効率的に取得するにはどうすればよいですか?

LIMIT と OFFSET を使用しているときに MySQL ページネーションで合計結果数を効率的に取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-27 11:04:12
オリジナル
257 人が閲覧しました

How Can I Efficiently Get Total Result Count in MySQL Pagination While Using LIMIT and OFFSET?

MySQL のオフセットと制限を使用した合計結果の取得

ページネーションには、オフセットと制限の値に基づいてデータベースからデータのサブセットを取得することが含まれます。ただし、合計ページ数を決定するには、結果の合計数に関する知識が必要です。この記事では、この合計を計算するための効率的な方法に関するプログラミングの質問を示します。

質問:

PHP/MySQL で、ページネーションを実装するユーザーは、次のことを判断する必要があります。オフセットおよび制限パラメーターを使用する場合でも、特定のクエリの結果の総数。懸念されるのは、行数をカウントする制限制約なしで 2 番目のクエリを実行すると、計算的に無駄が生じる可能性があるということです。もっとリソースに優しいアプローチはありますか?

答え:

はい、このシナリオには最適化されたソリューションがあります。最初のクエリの先頭で SQL_CALC_FOUND_ROWS キーワードを利用すると、MySQL はオフセットや制限の制限に関係なく、一致するすべての行の自動カウントを実行します。これにより、2 番目のクエリが不要になります。

SQL_CALC_FOUND_ROWS を使用してクエリを変更する方法は次のとおりです。

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE category_id = ? LIMIT ?, ?
ログイン後にコピー

この変更されたクエリが実行されたら、次のクエリを実行して合計を取得できます。一致する行の数:

SELECT FOUND_ROWS()
ログイン後にコピー

SQL_CALC_FOUND_ROWS を使用すると、次のことができます。 1 回のデータベース呼び出しで、ページ分割された結果と合計結果数の両​​方を効率的に取得します。

以上がLIMIT と OFFSET を使用しているときに MySQL ページネーションで合計結果数を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート