MySQL クエリでオフセットと制限を使用して合計結果を決定する方法
Codeigniter または同様の PHP/MySQL フレームワークを使用したページネーション シナリオでは、次のようになります。合計ページ数を計算するために、テーブル内の結果の合計数を決定することが重要です。制限機能なしで 2 番目のクエリを実行する標準的な方法は計算効率が悪いように見えますが、このプロセスを最適化する代替ソリューションが存在します。
SQL_CALC_FOUND_ROWS の利用
MySQL は特別なSQL_CALC_FOUND_ROWS として知られる関数。このステートメントを、limit 句と offset 句を含むクエリの前に含めることで、データベースは制限なく返される行の合計数が特別な内部変数に格納されるようにします。これにより、追加のクエリを必要とせずに合計数を効率的に取得できます。
たとえば、次のクエリには SQL_CALC_FOUND_ROWS が含まれています。
SELECT * FROM my_table WHERE category_id = ? ORDER BY id LIMIT 10 OFFSET 20
合計数を取得するには、単に次のクエリ:
SELECT FOUND_ROWS()
これは、オフセット パラメーターや制限パラメーターに関係なく、where 句を満たすテーブル内の行の合計数を返します。この値を制限値で割ることで、ページネーションに必要な合計ページ数を取得できます。
SQL_CALC_FOUND_ROWS を採用すると、複数のデータベース呼び出しの必要性がなくなり、合計ページネーションが正確に計算されるため、ページネーションがより効率的になります。ページ数。
以上がオフセットと制限を使用して MySQL クエリの合計結果を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。