私が理解する限り、各トランザクションはデータベースの独自のバージョンを見るため、システムは一部のカウンタから行の総数を取得できず、したがってインデックスをスキャンする必要があります。しかし、私はそれがプライマリキー上のクラスタ化されたインデックスであり、追加のインデックスではないと考えました。とにかく、私は1つ以上の追加インデックスを持っていますか?テーブル内のすべての行を数えるときにクラスタ化されていないインデックススキャンがあるのはなぜですか?
この問題を掘り下げてみると、別の奇妙なことに気づいた。 Id、View_Count、Titleの3つの列を持つ2つの同一のテーブル、ArticlesとArticles2があるとします。最初のビューにはクラスタ化されたPKベースのインデックスのみがあり、2番目のビューにはview_countにクラスタ化されていない非ユニークなインデックスが追加されています。クエリSELECT COUNT(1) FROM Articles
は、追加のインデックスを持つテーブルに対して2倍高速に実行されます。
ええ、私は第2の部分を掲示し、より慎重に計画を見たときにそれを理解しました。クラスタ化インデックススキャンのCPUコストは同じですが、IOコストは高くなります。 – synapse