Im Zweifel wird ein ungeschickter Index gar nicht erst verwendet.
Manche SQL-Dialekte erlauben da sogar, den zu nehmenden Index vorzugeben, egal ob er passt oder nicht.
Gerade solche Sachen sollte man wirklich der DB überlassen, wenn sie denn korrekt implementiert ist.

Z.T. gehe ich bei ODBC-Anwendungen sogar hin, lade die Daten unsortiert und sortiere mit Hilfe der vorhandenen Methoden von ADO.
Dies hat sich manchmal sogar als performanter erwiesen, ins besonders wenn man Sortierungen auf berechneten Feldern hat.

Auch dieses ist mitunter ein SQL-Problem, Berechnungen in den OrderBy aufzunehmen wo mit Sicherheit kein Index vorhanden sein kann.
Auch Berechnungen in der Where-Klausel sind solche Kandidaten.
Es gibt viele ungünstige Methoden, wo jede DB halt ihre Stärken oder Schwächen darauf hat und unterschiedlich performante Ergebnisse bringt.