Bir dizin veya tablo taraması söz konusu olduğunda, SQL Server'ın hangisinin daha iyi olduğunu görmek için istatistikleri kullandığını biliyorum.
20 milyon sıralı bir masam var. (SnapshotKey, Measure) bir dizin var ve bu sorgu:
select Measure, SnapshotKey, MeasureBand
from t1
where Measure = 'FinanceFICOScore'
group by Measure, SnapshotKey, MeasureBand
Sorgu 500 bin satır döndürür. Böylece sorgu tablonun satırlarının yalnızca% 2.5'ini seçer.
Soru, SQL Server'ın sahip olduğum kümelenmemiş dizini kullanmaması ve bunun yerine bir tablo taraması kullanmasıdır.
İstatistikler güncellenir.
Sorgu performansının iyi olduğunu belirtmek güzel.
Tablo Tarama
Zorla Endeks
Tablo / Dizin Yapısı
CREATE TABLE [t1](
[SnapshotKey] [int] NOT NULL,
[SnapshotDt] [date] NOT NULL,
[Measure] [nvarchar](30) NOT NULL,
[MeasureBand] [nvarchar](30) NOT NULL,
-- and many more fields
) ON [PRIMARY]
Veri ambarı olduğu için PK yok.
CREATE NONCLUSTERED INDEX [nci_SnapshotKeyMeasure] ON [t1]
(
[SnapshotKey] ASC,
[Measure] ASC
)