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 サイトの他の関連記事を参照してください。