Stephan Huber: Abfrage Wert unter Meßkurve

Beitrag lesen

Hallo Philipp,

Nun, du möchtest die Daten interpolieren.

Ja, aber nur linear zwischen jeweils zwei Meßpunkten. Auf die Meßdaten selbst verlasse ich mich. Es geht nur darum, daß ein Punkt die Leistung bei 300 U/min ist, der nächste bei 400 U/min, und wenn nun jemand nach allen Motoren sucht, die bei 366 U/min eine bestimmte Leistung haben, dann muß ich zwischen den beiden linear interpolieren - in der where-Bedingung, nicht nachher. Deswegen habe ich in jeder Tabellenzeile jeweils zwei aufeinanderfolgende Meßwerte, drehzahl_min/leistung_min und drehzahl_max/leistung_max:

(leistung_min+(leistung_max-leistung_min)/(drehzahl_max-drehzahl_min)*(100-drehzahl_min))>3

Das ist die lineare Interpolation zwischen zwei Meßpunkten, 100 ist der Drehzahlwert, den der Benutzer eingegeben hat.

Nun ja, irgendwie habe ich dein Problem wohl noch immer nicht ganz verstanden,

das befürchte ich auch ;-)

aber das ist das grafische Ergebnis der Abfrage, vielleicht macht es das klarer, die roten Linien sind die vom User eingebene Drehzahl und die minimale Leistung, die drei Linien sind die Meßdaten verschiedener Motoren (wahrscheinlich war auch die Bezeichnung "Leistung" irreführend, eigentlich ist es das Drehmoment, so steht es auch in den Abfragen, aber ich dachte mir, "Leistung" ist verständlicher, Zahl ist Zahl, war wohl ein Fehler):

<img src="http://analogon.com/private/kennlinien_beispiel.png" border="0" alt="">

Bist du eigentlich in der Zwischenzeit schon weitergekommen? - Was hast du gemacht?

Im Prinzip: festgestellt, daß es sowieso nicht geht, daß MySQL für die komplizierteren Abfragen auch Indizes verwendet, selbst wenn ich Indizes über mehrere Spalten verwende, und die Abfragen vereinfache, weil zu dieser Teilabfrage immer noch ein paar joins mit anderen Tabellen kommen (die joins gehen natürlich über indizes).
Ich mache jetzt bei ein paar komplizierteren Abfragen, wo ich noch mehrere große Tabellen dazujoine, vorher eine einfachere Abfrage, die die genaue Abfrage ausreichend limitiert, das reicht von der Performace dann aus.

Viele Grüße
Stephan