Hallo,
die nachfolgende Query führt eine Bestandskontrolle für jeden Artikel durch.
Der Artikel soll dann ausgewählt werden,
wenn
- in den letzten 7 Tagen Warenausgänge existieren
und
- der aktuelle Bestand < den Ausgängen der letzten 7 Tage ist.
oder: Der aktuelle Bestand ist < 0.
Ergänzend: Der erste Block in der QUery, welcher prüft ob überhaupt Ausgänge existieren, spart etwa
40s. Die aktuelle Laufzeit der Abfrage beträgt direkt auf dem Server ~45s.
Kann man das mit einer veränderten Query noch deutlich beschleunigen?
Danke!
Christoph
die nachfolgende Query führt eine Bestandskontrolle für jeden Artikel durch.
Der Artikel soll dann ausgewählt werden,
wenn
- in den letzten 7 Tagen Warenausgänge existieren
und
- der aktuelle Bestand < den Ausgängen der letzten 7 Tage ist.
oder: Der aktuelle Bestand ist < 0.
Ergänzend: Der erste Block in der QUery, welcher prüft ob überhaupt Ausgänge existieren, spart etwa
40s. Die aktuelle Laufzeit der Abfrage beträgt direkt auf dem Server ~45s.
Code:
SELECT DISTINCT * FROM daten_artikel WHERE
(EXISTS
(SELECT ID FROM bew_lager_protokoll
WHERE ARTIKELNR = daten_artikel.ARTIKELNR AND Ursache = "Warenausgang" AND SUBDATE(NOW(), 7))
AND
((SELECT coalesce(SUM(bew_lager_bestand.Bestand)) AS "Curbestand"
FROM bew_lager_bestand WHERE ARTIKELNR = daten_artikel.ARTIKELNR AND Artikeltyp <> "Gesperrt" AND Bestand > 0)
<
(SELECT coalesce(SUM(MengeAlt - MengeNeu)) FROM bew_lager_protokoll
WHERE Ursache = "Warenausgang" AND bew_lager_protokoll.ARTIKELNR =
daten_artikel.ARTIKELNR AND Datum > SUBDATE(NOW(), 7)))
OR
(EXISTS (SELECT *
FROM bew_lager_bestand WHERE ARTIKELNR = daten_artikel.ARTIKELNR AND Artikeltyp <> "Gesperrt" AND Bestand < 0)
))
Kann man das mit einer veränderten Query noch deutlich beschleunigen?
Danke!
Christoph
Zuletzt bearbeitet: