Hallo Philipp,
Nur aus interesse: Woher kommt die Drei? - Ist das eine von dir festgelegte Schwelle?
Nein, die gibt auch der User ein.
Jedoch, wenn du eine einfache Abfrage, wie z. B. WHERE
drehzahl_min<=drehzahl_gewünscht-50 und drehzahl_max>=drehzahl_gewünscht+50
vorschaltest, wird der QueryOptimizer evtl. den Index verwenden können und so die
relevanten Daten zuerst auslesen, bevor komplexere Berechungen durchgeführt werden.
So ungefähr dachte ich mir das auch, und habe es über das Wochenende ausprobiert. Das Problem dabei ist, daß das nur über einen mehrspaltigen Index funktionieren würde (über drehzahl_min, drehzahl_max, drehmoment_min, drehmoment_max). Der geht aber, soweit ich die MySQL-Dokumentation verstande habe (ausprobiert habe ich es auch), nur, wenn der Query nur aus AND-Bedingungen besteht, wo in jedem einzelnen Teil dann immer ein Teil des Index vorkommen muß. In dem Query ist aber immer notwendig ein OR, weil die Kurve ja steigend oder fallend sein kann, d.h. der erste oder der zweite Punkt kann unter dem gesuchten Grenzwert liegen, deswegen bin ich mir relativ sicher, daß ich keinen Index verwenden kann. (d.h. wenn ich nur Intervalle suche, wo beide drüber liegen, was mit einem mehrspaltigen Index gehen würde, lasse ich notwendig einige Möglichkeiten aus)
D.h. dieser Teil es Query ist geblieben wie er ist, das geht halt nicht anders, und die Performance ist auch ausreichend, was mir eigentlich Sorgen gemacht hat, war die Performance, wenn ich die anderen Tabellen joine, z.B. mögliche Getriebe, mit denen man die nötige Leistung erreichen könnte, die schränke ich jetzt vorher entsprechend ein.
Viele Grüße
Stephan