Hallo,
folgendes Problem: ich habe eine Datenbank (MySQL) mit Meßergebnissen für verschiedene Motoren, die die Leistung bei einer bestimmten Drehzahl enthält, und nun will ich für eine vorgegebene Drehzahl alle Motoren finden, die eine bestimmte Leistung liefern können, also unter der Meßlinie liegen.
Die Tabelle, auf die es ankommt, sieht ungefähr so aus:
|parentid|drehzahl_min|leistung_min|drehzahl_max|leistung_max|
| 1 | 300 | 1,5 | 400 | 2 |
| 1 | 400 | 2 | 450 | 3 |
parentid ist die ID der Messung. Ich will genau selektieren, d.h. wenn nach der Drehzahl 366 gesucht wird, soll die Abfrage "interpolieren", was die Leistung an diesem Punkt ist, und nur die Motoren liefern, die an diesem Punkt drunterliegen. Das habe ich auch hinbekommen, in der Abfrage stehen dann im where-clause halt Ausdrücke wie:
(leistung_min+(leistung_max-leistung_min)/(drehzahl-drehzahl_min)*(100-drehzahl_min))>3
...und das ist das Problem: damit kann die Datenbank keinen Index mehr verwenden, und das macht das ganze potentiell sehr langsam.
Hat jemand eine Idee, wie man das mit der Verwendung eines Index hinbekommen könnte?
Viele Grüße
Stephan