SQL Server'da, kümelenmiş dizin anahtarı sütunları her zaman satır bulucu olarak işlev görecek şekilde kümelenmemiş dizine eklenir (Ref: Kümelenmemiş Dizin Anahtarları Hakkında Daha Fazla Bilgi ).
Benzersiz olarak bildirilen bir NCI için, dahil edilen sütun olarak eklenirler, aksi takdirde anahtarın sonuna eklenirler.
Varsayılan yerleşim sorgularınız için optimum değilse, sütunları açıkça eklemek isteyebilirsiniz. Örneğin ASC
/ DESC
yönünü kontrol etmek veya dizindeki anahtar sütunların konumunu kontrol etmek istiyorsanız.
CREATE TABLE T
(
A INT,
B INT,
C INT ,
PRIMARY KEY CLUSTERED (B DESC, C DESC)
)
/*Implicitly adds B DESC, C DESC to end of key*/
CREATE NONCLUSTERED INDEX ix1 ON T(A ASC)
/*No sort operation*/
SELECT *
FROM T
ORDER BY A ASC,B DESC, C DESC
/*
But the avove index won't be able to seek into A,C
and will need a residual predicate after seeking into A.
For the following query
*/
SELECT *
FROM T
WHERE A=1 AND C > 4
ORDER BY C ASC, B DESC
/*This index explicitly controlling the key column position
and direction would be better*/
CREATE NONCLUSTERED INDEX ix2 ON T(A ASC, C ASC, B DESC)