Ja, der Vorteil ist, wenn Sie einen Teil des Index abfragen möchten. Wenn Sie die teilweise verwendeten Prädikate an die erste Stelle setzen, kann der Index für Abfragen verwendet werden, an denen diese Prädikate beteiligt sind, jedoch nicht alle Spalten im Index.
Sofern Sie keine anderen Anforderungen haben, kann es hilfreich sein, die selektivsten Prädikate an die erste Stelle zu setzen, da hierdurch Indexsuchvorgänge schneller reduziert werden können.
In Ihrem Fall IDX_2ist dies je nach Art der Abfragen in der Tabelle nicht unbedingt redundant. Es ist jedoch möglicherweise nicht erforderlich, alle Spalten einzuschließen. Wenn Sie zum Beispiel viele Abfragen nach locationund datedann durchführen, IDX_2kann dies hilfreich sein, um diese Abfragen zu lösen, da dies IDX_1nicht in der richtigen Reihenfolge erfolgt, um diesbezüglich hilfreich zu sein. Sie können jedoch feststellen, dass dies itemüberflüssig ist IDX_2.
Seit 9i hat Oracle einen "Skip Scan" -Operator eingeführt, mit dem nachgestellte Indexspalten effizienter abgefragt werden können, wodurch der Bedarf an zusätzlichen Indizes dieser Art verringert werden kann.
In einem spezielleren Fall kann die Abfrage, wenn Sie itemnach locationund dateohne weitere Spalten abfragen, vollständig über den Index aufgelöst werden, ohne dass etwas aus der Tabelle gelesen werden muss. Sie können auch abdeckende Indizes erstellen, an die nicht indizierte Spalten angehängt sind. Wenn alle erforderlichen Spalten aus dem Deckungsindex aufgelöst werden können, muss die Abfrage die Haupttabelle überhaupt nicht berühren.
Zum Schluss noch eine Antwort auf Ihre letzte Frage: Wenn Sie eine Reihe regelmäßig verwendeter Abfragen haben, die viel Ressourcen verbrauchen und mithilfe eines Indexes optimiert werden könnten, ist dies mit Sicherheit eine Überlegung wert. Das Verwalten von Indizes ist jedoch mit einem Mehraufwand für Einfügungen verbunden, sodass Sie die Abfrageleistung gegen den Mehraufwand abwägen müssen, den die Indizes für Einfügungs- oder Aktualisierungsvorgänge verursachen.