Tarkan,
Include 2005'te yeni. Ben de sen soyleyince baktim, cok faydali birseymis, hosuma giiti. Tam aradigim sey, sagol sayende varligini ogrendim:) Dokumantasyondan kaptigimi kisaca kendi yorumumla satayim, ornek ise dogrudan oradan;)
Cok sayida yapilan querylerde where kisminda gecen indexte olursa hizli olacak. Eger select field1,field2, ... deki field listesindeki tum alanlar da indexte olsa dogrudan indexe baktiginda query'i karsilayacak ve diskte asil tabloya bakmasi bile gerekmeyecek:) Tabii o zaman ortaya index boyut limiti (900 bytes), indexe eklemenin yasak oldugu data tipleri filan sorunu cikiyor. Mesela:
Title nvarchar(50)
Revision nchar(5)
FileName nvarchar(400)
iceren querylere karsilik 3'unu birden indexleyemiyor (nvarchar, nchar karakter basina 2 bytes - total (50+5+400)*2 = 910). Sorunu cozmek icin ikisini indexe alip sonuncuyu include'a aliyorsun:
SQL
USE AdventureWorks;
GO
CREATE INDEX IX_Document_Title
ON Production.Document (Title, Revision)
INCLUDE (FileName);
select title, revision
select title, revision, filename
gibi queryler tamamiyle bu indexten karsilanabiliyor:) Text,nText,Image disinda tum datatiplarini kabul etmesi baska bir artisi.
SQL
USE AdventureWorks;
GO
SELECT AddressLine1, AddressLine2, City, StateProvinceID, PostalCode
FROM Person.Address
WHERE PostalCode BETWEEN N'98000' AND N'99999';
Burada gercekte indexe ihtiyaci olan postalCode.
USE AdventureWorks;
GO
CREATE INDEX IX_Address_PostalCode
ON Person.Address (PostalCode)
INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);
ile yatilan index hem o cok kullanilacak where'i karsiliyor hem de tum sonuc indexten alinabiliyor.
Tabii dokumentasyonun sonunda da uyarisi geliyor:) Gereginden fazla yapmaya baslarsan index boyutunun buyumesi, daha az index satirinin bir sayfaya sigmasi (8K blok) vs. "Query Tuning"e bak diyor (o diyor ben demedim:)
With kismi genelde indexin olusturulmasi sirasinda kullanilacak kaynak/yontem vs + index sayfasinin ne kadar kullanilacagi, ne kadar tampon birakacagin gibi seylerle ilgili. DBA olmadigin surece bence varsayilanlari kullan gec.