SQL count(*) パフォーマンスについて
2,000 万行を超えるテーブルに対して count 操作を実行するクエリを考えてみましょう。実行時間は count 式によって大きく異なり、比較が必要な式 (例: count(*) = 1) では大幅な遅延が発生します。
実行速度が遅い根本原因
このパフォーマンスの違いの説明は、SQL Server で採用されている最適化手法にあります。最初のクエリ (count() = 0) の場合、サーバーは行を数えるのではなく、行 (exists(select from BookChapters)) の存在をチェックするように最適化します。
対照的に、他のクエリ (count() = 1 または count() > 1) の場合、SQL Server は行をカウントするための非クラスター化インデックス。ただし、この場合のテーブルには非クラスター化インデックスがないため、サーバーはテーブル全体をスキャンする必要があり、実行時間が大幅に長くなります。
パフォーマンスの向上
count(*) クエリのパフォーマンスを向上させる:
高速行カウントの代替方法
以上がSQL Server で COUNT(*) が非常に遅いのはなぜですか?どうすれば高速化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。