Bei 'nem Order by im
SQL ist jede Angabe von irgendwelchen Indexspalten ... im Quelltext unsinnig. Order by heißt: Liebe Datenbank, bitte sortiere mir das Ergebnis so und so. Und das macht sie dann.
Jede weitere Indexangabe ist überflüssig, ggfls. aber auch kontraproduktiv.
In den meisten Fällen ist der vom Optimierer erstellte Indexplan ausreichend schnell.
Als Enwickler der Anwendung sollte man sich da raus halten.
Es gibt Ausnahmefälle, in denen man als Entwickler der Datenbank die Laufzeit der Abfrage selbst optimieren kann.
Z.B. wenn ein Index mit geringer Selectivität zusätzlich mit einbezogen wird, obwohl das Ergebnis durch einen anderen Index bereits hinreichend eingeschränkt ist.
Angenommen eine Abfrage über 2 Felder.
Index1 liefert für Feld1 3 übereinstimmende Datensätze
Index2 liefert für Feld2 500000 übereinstimmende Datensätze
Es ist schneller Feld2 in den 3 Datensätzen zu vergleichen, als die 3 Datensätze in den 500000 Datensätzen zu suchen.
Deshalb soll nur Index1 verwendet werden.
Für solche Anwendungsfälle würde ich die Daten in eine VIEW oder PROCEDURE bereitstellen und den Plan dort festlegen.
Alternativ könnte man aber auch einen Index anlegen der speziell für diesen Anwendungsfall beide Felder kombiniert.