ホームページ >データベース >mysql チュートリアル >「SQL_CALC_FOUND_ROWS と COUNT(*): ページネーションではどちらの方法がより効率的ですか?」

「SQL_CALC_FOUND_ROWS と COUNT(*): ページネーションではどちらの方法がより効率的ですか?」

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-14 07:30:11194ブラウズ

`SQL_CALC_FOUND_ROWS vs. COUNT(*): Which Method is More Efficient for Pagination?`

SQL パフォーマンス: SELECT SQL_CALC_FOUND_ROWS と SELECT COUNT(*) の比較

によって返される行数を制限する必要があるシナリオを考えてみましょう。ページングを目的とした SQL クエリ。レコードの合計数を確認するには、主に 2 つの方法があります。

方法 1: SQL_CALC_FOUND_ROWS

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();  

方法 2: SELECT COUNT(*)

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

次のような疑問が生じます。どの方法がより効率的ですか?

最良の方法: それは状況によって異なります

MySQL パフォーマンス ブログによると、決定的な答えはありません。ブログの著者である Peter Zaitsev 氏は、最適な方法はインデックス構成やその他の要因に依存すると示唆しています。

一般的なコンセンサス

しかし、この意見に対する多くのコメントが寄せられています。ブログ投稿によると、SQL_CALC_FOUND_ROWS は一般に 2 つのクエリを実行するよりも遅いことが示されているようです。報告されているパフォーマンスの低下は重大であり、最大 10 倍遅くなる可能性があります。

以上が「SQL_CALC_FOUND_ROWS と COUNT(*): ページネーションではどちらの方法がより効率的ですか?」の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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