Tworzenie indeksów z uwzględnionych kolumn

Indeks nieklastrowany mogą być rozszerzane o tym inne niżklucz oprócz indeksu klucz kolumny.Kolumnami są przechowywane w poziom liścia poziom drzewa b indeksu.

Indeksy, które zawierają kolumnami zapewniają największej korzyści przy obejmują one kwerendy.Oznacza to, że indeksy obejmują wszystkie kolumny odwołuje się kwerenda.Aby uzyskać więcej informacji, zobacz Indeks z uwzględnionych kolumn.

Wymagania dotyczące miejsca na dysku

Dodawanie do indeksu kolumnami używa więcej miejsca na dysku do przechowywania indeksu.W szczególności, dodając varchar(max), nvarchar(max), varbinary(max), lub xml typy danych jako kolumnami może znacznie zwiększyć wymagania dotyczące miejsca na dysku, ponieważ wartości kolumna są kopiowane do indeksu poziom liścia na poziomie i pozostawać w tabela lub indeks klastrowany.

Proces określania wymagań dotyczących miejsca na dysku dla indeksów z uwzględnionych kolumn jest taki sam jak zbudowania indeksów nie klastrowanych.Aby uzyskać informacje, zobacz Określanie wymagań dotyczących miejsca na dysku indeksu.

Zagadnienia wydajności

Wzrost wydajności są osiągane w operacji select, ponieważ optymalizator kwerendy można znaleźć wszystkie wymagane kolumna danych w indeksie; Tabela lub indeks klastrowany nie jest dostępny.Jednakże posiadające zbyt wiele uwzględnionych kolumn może zwiększyć czas wymagany do wykonywania Wstawianie, zaktualizować lub usunąć operacje tabela źródłowa lub indeksowane widoku z powodu zwiększonego indeksu konserwacji.

Przykłady

A.Obejmujący kwerendę

Poniższy przykład tworzy indeks nieklastrowany na Person.Address tabela z czterech dołączone kolumny.Kolumna klucz indeksu jest PostalCode i są kolumnami AddressLine1, AddressLine2, City, i StateProvinceID.

USE AdventureWorks2008R2;
GO
CREATE NONCLUSTERED INDEX IX_Address_PostalCode
ON Person.Address (PostalCode)
INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);
GO

Ta kwerenda będzie objęte indeksu.

SELECT AddressLine1, AddressLine2, City, StateProvinceID, PostalCode
FROM Person.Address
WHERE PostalCode BETWEEN '98000' and '99999';
GO

B.Przekraczającej limit rozmiaru indeksu

W poniższym przykładzie klauzula Dołącz instrukcja CREATE INDEX jest używana do indeksowania kolumna, które zazwyczaj przekroczyłaby limit rozmiaru maksymalnego kolumna klucz 900 bajtów.Production.ProductReview tabela zawiera następujące kolumny: ProductID(int), ReviewerName(nvarchar (50)) and Comments (nvarchar (3850)).Kolumny te są często używane w kwerendach, ale Comments Kolumna jest zbyt duży, aby uczestniczyć jako indeks klucz kolumny.Jednak za pomocą INCLUDE klauzula, Comments kolumna mogą być dodawane jako nonkey kolumn w indeksie.

USE AdventureWorks2008R2;
GO
CREATE NONCLUSTERED INDEX IX_ProductReview_ProductID_ReviewerName
ON Production.ProductReview (ProductID, ReviewerName)
INCLUDE (Comments);
GO

Ta kwerenda będzie objęte indeksu.

SELECT Comments
FROM Production.ProductReview 
WHERE ProductID = 937;
GO

Aby utworzyć indeks z uwzględnionych kolumn

CREATE INDEX (Transact-SQL)