ホームページ >データベース >mysql チュートリアル >SQL ページネーション: `SELECT SQL_CALC_FOUND_ROWS` と `SELECT COUNT(*)` - どちらが速いですか?
行数をカウントするための 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 サイトの他の関連記事を参照してください。