Hallo zusammen,
ich habe ein Performance Problem mit einer Abfrage. Es handelt sich dabei um eine Produktionsdatenbank. Als Ergebnis möchte ich diverse Mittelwerte und Summen, gruppiert nach Maschineninventarnummer, erhalten.
Nun, aus der Produktion kam die Anfrage, ob es nicht auch möglich wäre die Maschinen, welche an diesen Tagen nichts produziert haben anzuzeigen. Gelöst habe ich das nun wiefolgt:
Das Problem dabei ist, dass die Tabelle1 unheimlich viele Datensätze enthält und DISTINCT Abfrage extrem lang dauert. Diese ist jedoch eigentlich total unnötig, da ich genau die Maschinen die ich in der WHERE Klausel angebe als Ergebnis wieder haben möchte. Nun habe ich schon bspw. mit SELECT 'Maschine' IN (...) versucht, aber mehr als 'Maschine' = ... funktioniert leider nicht.
Hat jemand von euch eine Idee, wie ich ohne die Datenbank darauf abzufragen die (vorgegebenen) Maschinennummern ausgegeben bekomme?
Danke schonmal im Voraus.
ich habe ein Performance Problem mit einer Abfrage. Es handelt sich dabei um eine Produktionsdatenbank. Als Ergebnis möchte ich diverse Mittelwerte und Summen, gruppiert nach Maschineninventarnummer, erhalten.
Nun, aus der Produktion kam die Anfrage, ob es nicht auch möglich wäre die Maschinen, welche an diesen Tagen nichts produziert haben anzuzeigen. Gelöst habe ich das nun wiefolgt:
Code:
SELECT DISTINCT Maschine, Avg1, Avg2, Sum1 FROM Tabelle1 t LEFT JOIN (SELECT Maschine, 'Avg1'=... FROM Tabelle1 WHERE DATUM = '...' AND Maschine IN ('..','..',...,'..') GROUP BY Maschine) abf1 ON t.Maschine = abf1.Maschine LEFT JOIN (SELECT Maschine, 'Avg2'=... FROM Tabelle1 WHERE DATUM = '...' AND Maschine IN ('..','..',...,'..') GROUP BY Maschine) abf2 ON t.Maschine = abf2.Maschine LEFT JOIN (SELECT Maschine, 'Sum'=... FROM Tabelle1 WHERE DATUM = '...' AND Maschine IN ('..','..',...,'..') GROUP BY Maschine) abf3 ON t.Maschine = abf3.Maschine WHERE Maschine IN ('..','..',...,'..')
Hat jemand von euch eine Idee, wie ich ohne die Datenbank darauf abzufragen die (vorgegebenen) Maschinennummern ausgegeben bekomme?
Danke schonmal im Voraus.
Comment