ホームページ  >  記事  >  データベース  >  SQL で LIMIT を使用したページネーションを使用している場合でも、行の合計数を取得するにはどうすればよいですか?

SQL で LIMIT を使用したページネーションを使用している場合でも、行の合計数を取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-27 15:29:01807ブラウズ

How do you retrieve the total number of rows even when using pagination with LIMIT in SQL?

LIMIT によるページ分割を使用している場合でも合計行数を取得する

SQL で LIMIT 句を使用して結果をページ分割する場合、取得するためにクエリを 2 回実行する必要があり、面倒な場合があります。行の合計数。これは、実行にかなりの時間がかかる複雑なクエリに特に当てはまります。幸いなことに、これを 1 つのクエリで実行できるソリューションがあります。

SQL_CALC_FOUND_ROWS および FOUND_ROWS()

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 で非推奨

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

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