SQL で LIMIT 句を使用して結果をページ分割する場合、取得するためにクエリを 2 回実行する必要があり、面倒な場合があります。行の合計数。これは、実行にかなりの時間がかかる複雑なクエリに特に当てはまります。幸いなことに、これを 1 つのクエリで実行できるソリューションがあります。
MySQL 4.0.0 以降では、メイン クエリで SQL_CALC_FOUND_ROWS オプションを利用できます。 LIMIT 句を無視して合計行をカウントするように MySQL に通知します。これには、行数を取得するために 2 番目のクエリを実行する必要があります。ただし、このクエリは通常、メインのデータ取得クエリよりもはるかに単純で高速です。
使用方法は次のとおりです:
<code class="sql">SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10; SELECT FOUND_ROWS();</code>
最初のクエリの直後にある 2 番目のクエリは、合計行を取得します。 FOUND_ROWS() 関数を使用してカウントします。
MySQL バージョン 8.0.17 以降では、SQL_CALC_FOUND_ROWS 修飾子と FOUND_ROWS() 関数は非推奨となり、将来削除される予定です。今後のリリース。 MySQL ドキュメントでは、総行数を取得する代わりに COUNT を使用することを推奨しています。
例:
<code class="sql">SELECT * FROM tbl_name WHERE id > 100 LIMIT 10; SELECT COUNT(*) WHERE id > 100;</code>
これらの手法を活用すると、効果的に行数を取得できます。 LIMIT 句でページネーションを使用している場合でも行の総数が増加するため、クエリの効率が向上し、コードが合理化されます。
以上がSQL で LIMIT を使用したページネーションを使用している場合でも、行の合計数を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。