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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-12 17:28:11393ブラウズ

SQL Pagination: `SELECT SQL_CALC_FOUND_ROWS` vs. `SELECT COUNT(*)` - Which is Faster?

行数をカウントするための SELECT SQL_CALC_FOUND_ROWS と SELECT COUNT(*) の比較

SQL でデータをページ分割する場合、合計レコードを決定するための 2 つの方法が存在します。カウント: SQL_CALC_FOUND_ROWS および SELECT COUNT(*)。どちらの方法がより高速に実行されますか?

方法 1: SQL_CALC_FOUND_ROWS

この方法では、SQL_CALC_FOUND_ROWS オプションが最初の SELECT ステートメントに追加されます。このステートメントを実行した後、SELECT FOUND_ROWS() を実行して合計行数を取得できます。

方法 2: SELECT COUNT(*)

SQL_CALC_FOUND_ROWS を使用する代わりに、このメソッドは、元のクエリを変更せずに実行します。次に、別のクエリを実行して合計行数を取得します: SELECT COUNT(*) FROM table.

パフォーマンス比較

最適な選択は、次のような特定の要因によって異なります。インデックスとデータベース構成。 MySQL パフォーマンス ブログによると、SQL_CALC_FOUND_ROWS は、個別のクエリを実行する場合と同等から大幅に遅い (最大 10 倍遅い) まで、さまざまなパフォーマンスを示す可能性があります。

推奨

多くユーザーは、方法 2 (2 つのクエリを実行する) の方が一般にパフォーマンスが良いと報告しています。ただし、特定の環境に最適なアプローチを決定するには、代表的なデータセットを使用して両方の方法をベンチマークすることをお勧めします。

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

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