ホームページ  >  記事  >  データベース  >  MySQL で LIMIT を使用して合計行数を効率的に取得するにはどうすればよいですか?

MySQL で LIMIT を使用して合計行数を効率的に取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-27 02:54:30861ブラウズ

 How to Efficiently Retrieve Total Row Count with LIMIT in MySQL?

条件付き LIMIT を使用した合計行数の取得

ページ分割に LIMIT 句を指定した SQL クエリを使用する場合、行の合計数を決定するのは次のようになります。挑戦です。標準的なアプローチでは、クエリを 2 回実行します。1 回目は LIMIT 句を使用せずに行数を取得し、次に LIMIT 句を使用してページ分割されたデータを取得します。複雑なクエリの場合、このプロセスには時間がかかることがあります。

ただし、MySQL 4.0.0 では、より効率的なソリューションが導入されています。

SQL_CALC_FOUND_ROWS および FOUND_ROWS() を使用する

SQL_CALC_FOUND_ROWS オプションは、クエリの SELECT ステートメントの後に追加できます。これは、LIMIT 条件を考慮せずに合計行数を計算するように MySQL にフラグを立てます。合計行数を取得するには、FOUND_ROWS() 関数を使用した 2 番目のクエリが必要です。

使用法:

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();

注: SQL_CALC_FOUND_ROWS は行数を永続的に保存しないため、最初のクエリの直後に 2 番目のクエリを実行することが重要です。

SQL_CALC_FOUND_ROWS および FOUND_ROWS()

としてMySQL 8.0.17 では、SQL_CALC_FOUND_ROWS クエリ修飾子と FOUND_ROWS() 関数は非推奨となり、将来の MySQL バージョンでは削除される予定です。代わりに COUNT を使用することをお勧めします:

SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;

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

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