sütunlar yalnızca sorgunun SELECT
kısmına sütunları tedarik kullanılabilir ekleyin. Filtreleme için dizinin bir parçası olarak kullanılamazlar.
DÜZENLEME: ayrıca benim açımdan netleştirmek Bu örneği düşünün:
Ben basit bir tablo oluşturmak ve bunu doldurmak:
create table MyTest (
ID int,
Name char(10)
)
insert into MyTest
(ID, Name)
select 1, 'Joe' union all
select 2, 'Alex'
Şimdi bu 3 endeksler ve bunlara karşılık gelen yürütme planları dikkate basit SELECT.
select ID, Name
from MyTest
where Name = 'Joe'
Durum 1: Bir TABLO TARAMA sadece kimlik sonuçlarına dizini.
create index idx_MyTest on MyTest(ID)
Durum 2: adı dahil kimliği üzerine bir indeks. Biraz daha iyi çünkü endeks sorguyu kapsıyor, ancak hala bir SCAN operasyonu var.
create index idx_MyTest on MyTest(ID) include (Name)
Vaka 3: kimliği de dahil Name dizini. Bu en iyisi. endeks benim WHERE yan tümcesinde sütun üzerinde inşa, bu yüzden bir operasyon SEEK olsun ve endeks için eklenmeyecek sütunun sorgu kapsar.
create index idx_MyTest on MyTest(Name) include (ID)
teşekkürler Joe. Onların kendilerine yardımcı olmayacakları yerleri görebiliyorum ama eğer filtreleme için kullanılamıyorlarsa, varlıklarının bir anlamı olmazdı. Yanılıyorsam – PseudoToad
Ben aşağı oyu sakıncası, ama hiçbir açıklama ile anonim aşağı oyu sevmediğiniz. İtirazını açıklayabilir misin? –
-1 "Onlar filtreleme için dizinin parçası olarak kullanılamaz" katılmıyorum. Bir cvoering indeksi oluşturabilir, INCLUDE fıkrasında bir sütuna bir koşul ekleyebilir ve endeks hala kapsamını koruyacaktır. Reddetmem anonim değil. –