Hello,
indexe sind sinnvoll, wenn ordinale Größen gespeichert werden. Wie Du schon selber erkannt hast, ist ein Index auf logische Werte wenig sinnvoll.
Außerdem sollte die Indexbreite auch nicht _zu_ groß werden, da er ja redundant abgespeichert wird und daher Platz benötigt.
Darüber hinaus gilt die regel, dass ein Index die Zugriffszeit beim Lesen (Holen der Daten) verkürzt, beim Wegschreiben, Ändern und Löschen der Daten aber teilweise erheblich verlängert. Indexe sollten daher nur über Spalten (oder Kombinationen von Spalten) angelegt werden, die auch häufig als Filterkriterium genutzt werden.
Ob der Zugriff über einen weichen Kombinationsschlüssel (der erst in der Abfrage aus einzelindexen zusammengesetzt wird) genauso optimiert wird, wie der über einen harten (der als eigener Index ständig mitgeführt wird) hängt von der Qualität des Optimizer der DB ab.
Cheatah hat ja schon darauf hingewiesen, wie man ungefähr "zu Fuß" ermitteln kann, wie hoch der Nutzen ist. Eine Reduzierung von 100:1 pro Indexstufe ist noch nützlich, eine von 2:1 bestimmt nicht mehr.
Daher kommt es bei manchen DBMS sogar auf die Reihenfolge der einsdchränkenden Argumente in einem Filterkriterium an.
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen