SELECT COUNT(*) FROM MyTable
をいくつか試してみました 対 SELECT COUNT(SomeColumn) FROM MyTable
さまざまなサイズのテーブル、および SomeColumn
の場所 1 回はクラスター化キー列で、1 回は非クラスター化インデックスにあり、1 回はまったくインデックスにありません。
いずれの場合も、すべてのサイズのテーブル (300,000 行から 1 億 7000 万行まで) で、違いは見られません 速度または実行計画のいずれかに関して - すべての場合において、COUNT
クラスター化インデックススキャンを実行することで処理されます->つまり、基本的にテーブル全体をスキャンします。クラスター化されていないインデックスが含まれている場合、SELECT COUNT(*)
を実行している場合でも、スキャンはそのインデックスで行われます。 !
それらをカウントする方法や速度に違いはないようです.それらをすべてカウントするには、SQL Serverはテーブル全体をスキャンする必要があります.期間.
テストは SQL Server 2008 R2 Developer Edition で行われました