ホームページ > データベース > mysql チュートリアル > ページ分割された SQL クエリの合計行数を効率的に決定するにはどうすればよいですか?

ページ分割された SQL クエリの合計行数を効率的に決定するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-30 10:44:28
オリジナル
779 人が閲覧しました

How to Efficiently Determine Total Row Count in Paginated SQL Queries?

ページネーションによる合計行数の決定

SQL クエリでページネーションを実装する場合、合計行数を正確に決定することが重要になる場合があります。クエリを 2 回実行する (1 回目は LIMIT 句を使用せずに行をカウントし、もう 1 回目は LIMIT 句を使用してページ分割されたデータを取得する) ことは、特に複雑なクエリの場合には最適ではない可能性があります。

幸いなことに、MySQL は次のような洗練されたソリューションを提供します。 SQL_CALC_FOUND_ROWS および FOUND_ROWS() 構造。 SQL_CALC_FOUND_ROWS をメイン クエリに追加すると、MySQL は LIMIT 句が存在する場合でも行の総数をカウントします。 FOUND_ROWS() を使用した後続のクエリで、この数が取得されます。

例を次に示します。

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();
ログイン後にコピー

このアプローチは、クエリを 2 回実行するよりも高速で、正確な合計数が得られます。

MySQL 8 で非推奨となった関数

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;
ログイン後にコピー

これらの手法を活用することで、開発者は複数のクエリのオーバーヘッドを発生させることなく、ページ分割された SQL クエリの行を正確にカウントできます。

以上がページ分割された SQL クエリの合計行数を効率的に決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート