Abfragetypen und Indizes

Wenn Sie die Erstellung eines Indexes für eine Spalte in Erwägung ziehen, sollten Sie berücksichtigen, wie die Spalte in Abfragen verwendet wird. Die folgenden Tabellen beschreiben die Abfragetypen, für die Indizes hilfreich sind.

ms189605.note(de-de,SQL.90).gifHinweis:
Die Beispiele in der Tabelle basieren auf der AdventureWorks-Beispieldatenbank. Wenn Sie die Beispiele in SQL Server Management Studio ausführen, können Sie die Indizes anzeigen, die vom Abfrageoptimierer ausgewählt werden, indem Sie den tatsächlichen Ausführungsplan anzeigen. Weitere Informationen finden Sie unter Vorgehensweise: Anzeigen eines tatsächlichen Ausführungsplanes.
Abfrage, in der das Spaltenprädikat eines der folgenden Prädikate ist. Abfragebeschreibung und -beispiel In Erwägung zu ziehender Index

Genaue Übereinstimmung eines bestimmten Wertes

Suchen nach einer genauen Übereinstimmung. Die Abfrage verwendet dabei eine WHERE-Klausel, um einen Spalteneintrag mit einem bestimmten Wert anzugeben. Beispiel:

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

Nicht gruppierter oder gruppierter Index für die EmployeeID-Spalte.

Genaue Übereinstimmung eines Wertes in einer IN (x,y,z)-Liste

Suchen nach einer genauen Übereinstimmung des Wertes in einer angegebenen Liste von Werten. Beispiel:

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

Nicht gruppierter oder gruppierter Index für die EmployeeID-Spalte.

Wertebereich

Suchen nach einem Wertebereich. Die Abfrage gibt dabei einen Eintrag an, dessen Wert zwischen zwei Werten liegt. Beispiel:

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

Oder:

WHERE ProductModelID >= 1 AND ProductModelID <= 5

Gruppierter oder nicht gruppierter Index für die ProductModelID-Spalte.

Verknüpfung zwischen Tabellen

Suchen nach Zeilen in einer Tabelle, die einer Zeile in einer anderen Tabelle, basierend auf einem Verknüpfungsprädikat, entsprechen. Beispiel:

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;

Nicht gruppierter oder gruppierter Index für die ProductID- und ProductAssemblyID-Spalte.

LIKE-Vergleich

Suchen nach entsprechenden Zeilen, die mit einer bestimmten Zeichenfolge wie z. B. 'abc%' beginnen. Beispiel:

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

Nicht gruppierter oder gruppierter Index für die Name-Spalte.

Sortiert oder aggregiert

Erfordert eine implizite oder explizite Sortierreihenfolge oder eine Aggregation (GROUP BY). Beispiel:

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;

Nicht gruppierter oder gruppierter Index für die sortierte oder Aggregatspalte.

Ziehen Sie für Sortierspalten in Betracht, die ASC- oder DESC-Sortierreihenfolge der Spalte anzugeben.

PRIMARY KEY- oder UNIQUE-Einschränkung

Suchen nach doppelten Einträgen neuer Indexschlüsselwerte in Einfüge- und Aktualisierungsvorgänge, um PRIMARY KEY- und UNIQUE-Einschränkungen zu erzwingen. Beispiel:

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

Gruppierter oder nicht gruppierter Index für die in der Einschränkung definierte(n) Spalte(n).

UPDATE- oder DELETE-Vorgang in einer PRIMARY KEY/FOREIGN KEY-Beziehung

Suchen nach Zeilen in einem Aktualisierungs- oder Löschvorgang, bei der die Spalte an einer PRIMARY KEY/FOREIGN KEY-Beziehung beteiligt ist (mit oder ohne CASCADE-Option).

Nicht gruppierter oder gruppierter Index für die Fremdschlüsselspalte.

Spalte ist in der Auswahlliste, nicht jedoch im Prädikat enthalten.

Enthält eine oder mehrere Spalten in der Auswahlliste, die nicht für Suchen und Suchvorgänge verwendet wird. Beispiel:

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

Nicht gruppierter Index mit der Angabe FileName in der INCLUDE-Klausel.

Siehe auch

Konzepte

Allgemeine Richtlinien zum Indexentwurf
Index mit eingeschlossenen Spalten

Hilfe und Informationen

Informationsquellen für SQL Server 2005