Die beste Antwort darauf ist, Ihre Abfragen zu profilieren und festzustellen, ob der Index Ihre Abfragen verbessert. Die Schwierigkeit bei der Beantwortung dieses Problems besteht darin, dass es nahezu unmöglich ist, das Verhalten des Abfrageoptimierers zu verallgemeinern.
Eine Faustregel besagt, dass Ihre Selektivität bei einer gegebenen Abfrage in einer Tabelle 10% oder weniger beträgt. Dann profitieren Sie höchstwahrscheinlich von einem Index. In Ihrem Beispiel können Sie also von einem Index profitieren, wenn Ihre Werte gleichmäßig verteilt sind. Wenn Sie jedoch davon ausgehen, dass Ihr Tisch klein ist, kann Ihre Leistungssteigerung vernachlässigbar sein.
Dies ist keine feste Regel, da es viele Faktoren gibt, die die Anzahl von 10% ändern können, einschließlich der Verwendung eines gruppierten oder anderen Indextypen, Größe der Zeilen, wenn einige Spalten nicht inline sind Struktur usw.
Denken Sie auch daran, dass beim Einfügen in eine Tabelle mit einem Index eine erhebliche Leistungseinbuße entsteht. Wenn diese Tabelle häufig aktualisiert oder angehängt wird, kann der Geschwindigkeitsschub aus dem Index durch die langsameren Einfügungen und Aktualisierungen negiert werden.
Siehe den MSDN-Artikel unter Tablescan vs Index access.
Bearbeiten: Wie andere bereits erwähnt haben, kann Ihre Abfrage von einem Index profitieren, wenn Sie Aggregationsabfragen durchführen, z. B. das Zählen der Häufigkeit, mit der ein bestimmter Wert angezeigt wird. Sie können auch davon profitieren, wenn Sie häufig nach einer bestimmten Spalte sortieren.
Welcher Anteil der Zeilen Active = 1 tat, um andere mögliche Werte im Vergleich dar? Ich vermute, es war eine relativ kleine Teilmenge der gesamten Tabelle. –
Es funktioniert nicht. Ich habe es versucht und MS hat es bestätigt - niedrige Kardinalitätsindizes werden ignoriert, egal wie die Proportionen sind. – dkretz