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 サイトの他の関連記事を参照してください。