2010-12-28 6 views
2

Ich lief kürzlich einen Ausführungsplan und SSMS schlug vor, dass ich einen nicht gruppierten Index einer Tabelle hinzufüge.Nicht geclusterte SQL-Indizes. Um "einzuschließen" oder nicht "einzuschließen"

Zuerst habe ich den Index über das DB Diagramm gui hinzugefügt. Der Index, den er mir gab, sah so aus:

CREATE NONCLUSTERED INDEX [IX_MyTable] ON [dbo].[MyTable] 
(
    [ID_ForeignKey] ASC, 
    [ID] ASC 
) 

Das war nicht der Index, den es suchte. Als nächstes habe ich über den Rechtsklick im Object Explorer einen Index hinzugefügt. Ich habe es der ID_Foreign Schlüsseltabelle hinzugefügt und auf der Seite "Included Columns" die ID-Spalte eingefügt. Der Index es gab mir sah wie folgt aus:

CREATE NONCLUSTERED INDEX [IX_MyTable] ON [dbo].[MyTable] 
(
    [ID_ForeignKey] ASC 
) 
INCLUDE ([ID]) 

, dass der Index war es suchte.

Was ist der Unterschied zwischen diesen Indizes?

+1

Was ist Ihr Clustered-Index-Schlüssel in der Tabelle MyTable? Alle Clustered-Indexschlüssel werden automatisch in den Nicht-Clustered-Index aufgenommen. –

Antwort

3

Die erste erstellt einen Index für beide Spalten, der nach der ersten und dann nach der zweiten Spalte sortiert wird.

Der zweite Index sortiert nur nach der ersten Spalte, trägt aber auch die Daten aus der zweiten Spalte. Dadurch müssen Sie nicht zur Tabelle zurückkehren, um die Daten für diese Spalte abzurufen.

Der erste Index erfordert mehr Berechnungen bei Einfügungen und Aktualisierungen. Wenn Sie die zweite Spalte nicht indexiert benötigen, verwenden Sie die zweite Version des Indexes. Beide liefern die Daten, die Sie benötigen, ohne sie in der Tabelle nachschlagen zu müssen.

Verwandte Themen