Ich stimme Cade Roux zu .
Dieser Artikel soll Sie auf den richtigen Weg bringen:
Zu beachten ist, dass Clustered-Indizes einen eindeutigen Schlüssel (eine Identitätsspalte, die ich empfehlen würde) als erste Spalte haben sollten. Grundsätzlich hilft es Ihnen, Ihre Daten am Ende des Index einzufügen und nicht viele Festplatten-E / A- und Seitensplits zu verursachen.
Zweitens, wenn Sie andere Indizes für Ihre Daten erstellen und diese geschickt erstellt werden, werden sie wiederverwendet.
Stellen Sie sich beispielsweise vor, Sie durchsuchen eine Tabelle in drei Spalten
Bundesland, Landkreis, Postleitzahl.
- Sie suchen manchmal nur nach Bundesland.
- Sie suchen manchmal nach Bundesstaat und Landkreis.
- Sie suchen häufig nach Bundesstaat, Landkreis, Postleitzahl.
Dann ein Index mit Bundesland, Landkreis, Postleitzahl. wird in allen drei Suchvorgängen verwendet.
Wenn Sie häufig nur nach zip suchen, wird der obige Index nicht verwendet (ohnehin von SQL Server), da zip der dritte Teil dieses Index ist und der Abfrageoptimierer diesen Index nicht als hilfreich ansieht.
Sie können dann einen Index nur für Zip erstellen, der in dieser Instanz verwendet wird.
Übrigens können wir die Tatsache nutzen, dass bei der mehrspaltigen Indizierung die erste Indexspalte immer für die Suche verwendet werden kann. Wenn Sie nur nach "Status" suchen, ist sie effizient, aber nicht so effizient wie der Status "Einspaltiger Index ein" '
Ich denke, die Antwort, nach der Sie suchen, ist, dass es von Ihren where-Klauseln Ihrer häufig verwendeten Abfragen und auch von Ihren Gruppen nach abhängt.
Der Artikel wird viel helfen. :-)
IDENTITY, GUID, etc
. 3) "Dann wird bei allen drei Suchvorgängen ein Index mit Bundesstaat, Landkreis und Postleitzahl verwendet." ist falsch und widerspricht "die erste Spalte ist verwendbar". Die 2. & Subs-Spalten im Index können nicht für die Suche verwendet werden.Ja. Ich empfehle Ihnen, die Artikel von Kimberly Tripp zur Indexierung zu lesen .
Wenn ein Index "abdeckt", muss nur der Index verwendet werden. In SQL Server 2005 können Sie dem Index auch zusätzliche Spalten hinzufügen, die nicht Teil des Schlüssels sind, wodurch Auslösungen in den Rest der Zeile vermieden werden.
Wenn mehrere Indizes in einer einzelnen Spalte vorhanden sind, wird möglicherweise nur ein Index verwendet. Sie müssen sich auf den Ausführungsplan beziehen, um zu sehen, welche Auswirkungen verschiedene Indexierungsschemata bieten.
Sie können auch den Optimierungsassistenten verwenden, um festzustellen, welche Indizes eine bestimmte Abfrage oder Arbeitslast am besten ausführen lassen.
quelle
Der mehrspaltige Index kann für Abfragen verwendet werden, die auf alle Spalten verweisen :
Dies kann direkt über den mehrspaltigen Index nachgeschlagen werden. Auf der anderen Seite kann höchstens einer der einspaltigen Indizes verwendet werden (er müsste alle Datensätze mit Spalte1 = 1 nachschlagen und dann jeweils Spalte2 und Spalte3 überprüfen).
quelle
Ein Punkt, der vermisst worden zu sein scheint, sind Sternumwandlungen. Index-Schnittoperatoren lösen das Prädikat auf, indem sie den Satz von Zeilen berechnen, die von jedem der Prädikate getroffen werden, bevor E / A in der Faktentabelle ausgeführt werden. In einem Sternschema würden Sie jeden einzelnen Dimensionsschlüssel indizieren, und der Abfrageoptimierer kann auflösen, welche Zeilen durch die Indexschnittpunktberechnung ausgewählt werden sollen. Die Indizes für einzelne Spalten bieten hierfür die beste Flexibilität.
quelle
Wenn Sie Abfragen haben, bei denen häufig relativ statische Spalten verwendet werden, wird die Leistung erheblich verbessert, wenn Sie einen einzelnen Deckungsindex erstellen, der alle Spalten enthält.
Durch das Einfügen mehrerer Spalten in Ihren Index muss der Optimierer nur dann direkt auf die Tabelle zugreifen, wenn sich eine Spalte nicht im Index befindet. Ich benutze diese häufig im Data Warehousing. Der Nachteil ist, dass dies viel Aufwand kosten kann, insbesondere wenn die Daten sehr volatil sind.
Das Erstellen von Indizes für einzelne Spalten ist nützlich für Suchvorgänge, die häufig in OLTP-Systemen ausgeführt werden.
Sie sollten sich fragen, warum Sie die Spalten indizieren und wie sie verwendet werden. Führen Sie einige Abfragepläne aus und prüfen Sie, wann auf sie zugegriffen wird. Index-Tuning ist genauso instinktiv wie Wissenschaft.
quelle