ホームページ > データベース > mysql チュートリアル > SQL_CALC_FOUND_ROWS と SELECT COUNT(*): ページネーションはどちらが速いですか?

SQL_CALC_FOUND_ROWS と SELECT COUNT(*): ページネーションはどちらが速いですか?

DDD
リリース: 2024-12-31 10:35:14
オリジナル
868 人が閲覧しました

SQL_CALC_FOUND_ROWS vs. SELECT COUNT(*): Which is Faster for Pagination?

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

ページネーションを使用してクエリ内のレコードの合計数を求める場合、2 SQL_CALC_FOUND_ROWS および SELECT COUNT(*) というメソッドが出現します。最適なアプローチの決定は、さまざまな要因に左右されます。

方法 1: SQL_CALC_FOUND_ROWS

この方法では、最初の SELECT クエリで SQL_CALC_FOUND_ROWS を使用し、その後 FOUND_ROWS() を使用して合計を取得します。行数。構文は次のとおりです。

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();
ログイン後にコピー

方法 2: SELECT COUNT(*)

または、別のクエリで SELECT COUNT(*) を使用して行をカウントします。元のクエリを実行した後。構文は次のとおりです。

SELECT * FROM table WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM table WHERE id > 100;
ログイン後にコピー

パフォーマンス評価

各メソッドのパフォーマンスは、インデックスの可用性やクエリの複雑さなどの要因に基づいて異なります。 MySQL パフォーマンス ブログによる包括的な分析の 1 つでは、

  • SQL_CALC_FOUND_ROWS は、一般に 2 つのクエリを実行するよりも遅いことが示唆されています。、特にインデックスが最適化されていない場合やクエリが複雑な場合は、
  • 行が増えるとパフォーマンスの差が拡大します
  • ただし、複雑な式またはサブクエリを含むクエリの場合、インデックスの使用率により、SQL_CALC_FOUND_ROWS のパフォーマンスが SELECT COUNT(*) よりも高くなる可能性があります。

最終的には、理想的なアプローチは、特定のコンテキストとアプリケーションの要件によって異なります。パフォーマンス ブログの投稿にあるように、「インデックスやその他の要因によって異なります。」

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

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