2017-02-15 3 views
1

Es gibt eine Menge Artikel über die Reihenfolge der Indexspalten, und ich kam auf die Idee. Ich habe jedoch keinen eindeutigen Index gefunden.Eindeutige Reihenfolge der Indexspalten - ist das wichtig?

Einfaches Beispiel: Product und Category Tabellen n-n-Beziehung mit ProductCategoryMapping Tabelle mit 3 Spalten: Identität Id, ProductId und CategoryId.

Wenn ich einen eindeutigen Index UN_ProductCategoryMapping_Product mit 2 Spalten zu erstellen: ProductId und CategoryId, sollte ich auch einen anderen eindeutigen Index in umgekehrter Reihenfolge erstellen, gehe ich davon aus manchmal wollen „Liste alle Produkte einer Kategorie“ und manchmal „Liste alle Kategorien Ein Produkt gehört zu "?

Ist SQL Server intelligent genug, um in diesem Fall zu optimieren?

+3

Wenn Sie ein Telefonbuch haben, in dem alle in 'Nachname, Vorname' aufgelistet sind, wie nützlich wäre das, wenn Sie wissen möchten, wie häufig jeder Vorname ist? –

+0

ein eindeutiger Index für jede dieser Spaltenreihenfolgen wäre hilfreich, um jeden dieser Suchfälle zu unterstützen. – SqlZim

Antwort

2

Eindeutigkeit hängt nicht von der Spaltenreihenfolge ab. Wenn Sie angeben, dass die Kombination der Spalten 1, 2 und 3 eindeutig ist und jemand anderes angibt, dass die Kombination der Spalten 2, 1 und 3 eindeutig ist, geben Sie dieselben Fakten an.

Aber das heißt nicht, dass alle Indizes gleich oder gleichwertig sind. Indizes sind nur dann (potenziell) nützlich, wenn Sie alle ihre Spalten ganz links verwenden können. Wenn Sie eine Abfrage verwenden, die nicht die Spalte ganz links von einem Index verwendet, ist die einzige Möglichkeit, die Abfrage zu erfüllen, das Scannen der gesamten Tabelle.

+0

SQL Server kann entscheiden, den Index anstelle der Tabelle zu scannen, daher kann der Index auch für die Abfrage der zweiten Indexspalte verwendet werden. Dies geschieht häufig, wenn der Index im Vergleich zur Tabelle (oder zum gruppierten Index) klein ist und die Anzahl der benötigten Nachschlagevorgänge gering oder gar nicht ist. –

Verwandte Themen