SQL パフォーマンスの最適化: "SELECT SQL_CALC_FOUND_ROWS..." と "SELECT COUNT(*)" の行数の比較
SQL データベース最適化では、テーブル内のレコードの総数を決定することが、ページネーションやその他の操作にとって重要です。このタスクの 2 つの一般的なメソッドは、「SELECT SQL_CALC_FOUND_ROWS...」と「SELECT COUNT(*)」です。
方法 1: "SELECT SQL_CALC_FOUND_ROWS..."
このメソッドは、最初の SELECT クエリで「SQL_CALC_FOUND_ROWS」オプションを使用して、サーバーが合計を返す準備をします。行数。最初のクエリの後、「SELECT FOUND_ROWS()」を使用して合計数を取得できます。
方法 2: "SELECT COUNT(*)"
または、 「SELECT COUNT(*)」を使用して別のクエリを実行し、データ内の合計行を直接カウントできます。 table.
パフォーマンスの比較
行数を決定するための最適な方法は、特定の要因によって異なります。 MySQL パフォーマンス ブログによると、「SQL_CALC_FOUND_ROWS」の効率はインデックスやその他の構成設定によって異なります。
専門家からの観察
Peter Zaitsev、著者MySQL パフォーマンス ブログでは、「SQL_CALC_FOUND_ROWS」は一般に 2 つの別々のクエリを実行するよりも遅いと示唆しています。ほとんどのシナリオに対応します。このブログ投稿の多くのコメンテーターは、「SQL_CALC_FOUND_ROWS」が 10 倍も大幅に遅くなる可能性があるとも指摘しています。
結論
一方、「SELECT SQL_CALC_FOUND_ROWS...」 " は特定の状況では有益な場合がありますが、パフォーマンスが重要な場合は "SELECT COUNT(*)" を使用することを一般的にお勧めします。実行時間を最小限に抑えることが重要なアプリケーション。ただし、ユースケースに最適なアプローチを決定するために、特定のデータと構成で両方の方法をテストすることを常にお勧めします。
以上がSQL 行数の最適化: `SELECT SQL_CALC_FOUND_ROWS` と `SELECT COUNT(*)` – どちらが速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。