Udostępnij za pośrednictwem


Typy kwerendy i indeksów

Podczas rozważania są czy utworzyć indeks dla kolumny, należy ocenić, jak kolumna jest używana w kwerendach.W poniższej tabeli opisano typy kwerendy, dla których indeksy są użyteczne.

Uwaga

Przykłady w tabela są oparte na AdventureWorks Przykładowa baza danych. Po uruchomieniu w przykładach SQL Server Management Studio, można wyświetlić wybranego przez optymalizator kwerendy wyświetlając plan wykonania rzeczywistej indeksy. Aby uzyskać więcej informacji zobaczHow to: Display an Actual Execution Plan.

Kwerendy, w którym predykat kolumna jest jeden z nich

Opis kwerendy i przykład

Indeks do rozważenia

Dokładnie pasuje do określonej wartości

Wyszukuje dokładny odpowiednik, w którym w kwerendzie użyto klauzula WHERE, aby określić pozycję kolumna z określonej wartości.Na przykład:

SELECT EmployeeID, Title 
FROM HumanResources.Employee 
WHERE EmployeeID = 228; 

Indeks klastrowany lub nieklastrowany na EmployeeID Kolumna.

Dokładne dopasowanie do wartości w IN (x, y, z) listy

Wyszukuje dokładnie pasującą wartość określonej listy wartości.Na przykład:

SELECT EmployeeID, Title 
FROM HumanResources.Employee 
WHERE EmployeeID IN (288, 30, 15);

Indeks klastrowany lub nieklastrowany na EmployeeID Kolumna.

Zakres wartości

Szuka zakres wartości, w których kwerendy określa każdy wpis, który ma wartość pomiędzy dwiema wartościami.Na przykład:

SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID BETWEEN 1 and 5;

Or

WHERE ProductModelID >= 1 AND ProductModelID <= 5

Klastrowany lub indeks nieklastrowany na ProductModelID Kolumna.

łączyć między tabelami

Wyszukuje w tabela wiersze, które odpowiadają wiersza w innej tabela, w oparciu o predykat łączyć.Na przykład:

SELECT a.ProductAssemblyID, b.Name, a.PerAssemblyQty
FROM Production.BillOfMaterials AS a
JOIN Production.Product AS b 
ON a.ProductAssemblyID = b.ProductID
WHERE b.ProductID = 900;

Indeks klastrowany lub nieklastrowany na ProductID i ProductAssemblyID kolumny.

LIKE porównania

Wyszukiwanie zgodnych wierszy, które zaczynają się ciąg znaków szczególnych, takich jak abc %.Na przykład:

SELECT CountryRegionCode, Name 
FROM Person.CountryRegion 
WHERE Name LIKE N'D%'

Indeks klastrowany lub nieklastrowany na Name Kolumna.

Posortowane lub łączone

Wymaga kolejność sortowania bezpośrednia lub pośrednia lub agregacja (GROUP BY).Na przykład:

SELECT a.WorkOrderID, b.ProductID, a.OrderQty, a.DueDate 
FROM Production.WorkOrder AS a
JOIN Production.WorkOrderRouting AS b 
ON a.WorkOrderID = b.WorkOrderID
ORDER BY a.WorkOrderID;

Klastrowany lub nieklastrowany indeks kolumna sortowania lub zagregowane.

W przypadku sortowania kolumn należy wziąć pod uwagę określać kolejność ASC lub DESC kolumna.

Ograniczenia klucz podstawowy lub UNIQUE

Wyszukiwanie duplikatów nowy indeks klucza wartości wstawiania i aktualizowanie operacji, aby wymusić ograniczenia klucz podstawowy i unikatowy.Na przykład:

INSERT INTO Production.UnitMeasure (UnitMeasureCode, Name, ModifiedDate)
VALUES ('OZ1', 'OuncesTest', GetDate());

Indeks klastrowany lub nieklastrowany na kolumna lub kolumna, które zdefiniowano w ograniczenie.

Operacja UPDATE lub DELETE klucz podstawowy / klucz obcy relacji

Wyszukiwanie wierszy w przypadku operacji aktualizację lub usunięcie, w którym kolumna uczestniczą w relacji klucz podstawowy KEY/walut obcych, lub bez opcją CASCADE.

Indeks klastrowany lub nieklastrowany kolumna klucz obcy.

Kolumna jest na liście select, ale nie w predykacie.

Zawiera jedną lub więcej kolumn na liście select, które nie są używane do wyszukiwania i wyszukiwań.Na przykład:

SELECT Title, Revision, FileName
FROM Production.Document
WHERE Title LIKE N'%Maintenance%' AND Revision >= 0';

Indeks nieklastrowany z FileName określone w klauzula INCLUDE.