ホームページ >データベース >mysql チュートリアル >MySQL でページネーションを使用して合計行数を効率的に取得する方法

MySQL でページネーションを使用して合計行数を効率的に取得する方法

DDD
DDDオリジナル
2024-10-27 06:42:02588ブラウズ

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

LIMIT を使用した合計行数の取得

ページネーションを使用して SQL クエリを実行する場合、多くの場合、合計行数を取得する必要があります。通常、これにはクエリを 2 回実行する必要があります。1 回目は LIMIT 句を使用せずに合計数を決定します。

ただし、複数のクエリに頼らずにこれを達成するより効率的な方法があります。

SQL_CALC_FOUND_ROWS

MySQL 4.0.0 以降、SQL_CALC_FOUND_ROWS オプションが使用できるようになりました。 LIMIT 句が存在する場合でも、合計行数を計算するように MySQL に指示します。

このオプションを使用するには、メイン クエリの SELECT ステートメントの後に追加するだけです。次に、別のクエリを実行して、FOUND_ROWS() 関数を使用して行数を取得します。

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

SELECT FOUND_ROWS();

注: SQL_CALC_FOUND_ROWS には 2 つのクエリが必要ですが、通常はメイン クエリを 2 回実行するより高速です。 。ただし、MySQL 8.0.17 の時点では、このオプションは非推奨であり、将来のバージョンでは削除される予定です。

代替: COUNT()

代替として、別のクエリで COUNT() 関数を使用して、合計行数を取得できます。

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

この方法でも 2 つのクエリが必要ですが、これはより新しい、推奨されるアプローチです。

以上がMySQL でページネーションを使用して合計行数を効率的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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