Udostępnij za pośrednictwem


Tworzenie indeksów za pomocą zestawu kolumn

Indeks nieklastrowany mogą być rozszerzane o tym nonkey kolumny z kolumny kluczy indeksu.Nonkey kolumn są przechowywane na poziomie poziom liścia B-drzewo z indeksu.

Indeksy, które zawierają kolumny nonkey zapewnia największą korzyść, gdy obejmują one kwerendy.Oznacza to, że indeksy dołączyć wszystkie kolumny zawiera odwołanie do kwerendy.Aby uzyskać więcej informacji, zobacz Index with Included Columns.

Wymagania dotyczące wolnego miejsca dysku

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

Proces określania wymagania dotyczące miejsca na dysku dla indeksów z kolumnami dołączony jest taka sama, jak ponownego zbudowania indeksów nie klastrowanych.Aby uzyskać informacje Zobacz Determining Index Disk Space Requirements.

Zagadnienia wydajności

Wzrost wydajności są osiągane w wybranych operacji, ponieważ optymalizator kwerendy można znaleźć wszystkie wymagane kolumna danych w indeksie, tabela lub indeks klastrowany nie jest dostępny.Jednak po zbyt wiele kolumn dołączone może zwiększyć czas, który jest wymagany do wykonania wstawiania, aktualizacji lub usuwania operacji podstawowej tabela lub widok indeksowany z powodu konserwacji wzrostu indeksu.

Przykłady

A.Obejmujących kwerendy

W poniższym przykładzie tworzony jest indeks nieklastrowany na Person.Address Tabela z czterech kolumn dołączone. Kolumna klucz indeksu jest PostalCode i nonkey kolumn AddressLine1, AddressLine2, City, i StateProvinceID.

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

Ta kwerenda zostanie objęte indeksu.

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

B.Przekracza limit rozmiaru indeksu

W poniższym przykładzie klauzula INCLUDE instrukcja CREATE INDEX używana do indeksowania kolumna, które zazwyczaj mogłaby przekroczyć limit rozmiaru maksymalnego kolumna klucz 900 bajtów.The Production.ProductReview tabela contains these columns: 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 kolumna klucz indeksu. Jednak przy użyciu INCLUDE Klauzula, Comments kolumna można dodać jako nonkey kolumna do indeksu.

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

Ta kwerenda zostanie objęte indeksu.

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

Aby utworzyć indeks z objęte kolumny