ページネーションによる合計行数の決定
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 サイトの他の関連記事を参照してください。