Thema: Delphi [SQL] Abfrage tunen

Einzelnen Beitrag anzeigen

Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#1

[SQL] Abfrage tunen

  Alt 30. Mär 2006, 14:20
Datenbank: MYSQL • Version: 5.1 • Zugriff über: ZEOS
Hallo zusammen,

für einen Bericht muss ich die folgenden Daten aus mehreren Tabellen auslesen / berechnen. Momentan benutze ich im "ersten Schuß" folgende Abfrage, um einen VIEW zu erstellen, in dem anschließend die Daten "berichtskonform" ausgewertet werden (zweite SQL-Abfrage mit Berechnungen aus den Daten des Views, die dann so im Bericht verwendet werden):
SQL-Code:
SELECT b.projektid, p.projektname,
# Umsatz
(SELECT SUM(ki.vorjahr+ki.jan) FROM pim_p_ist ki WHERE ki.zeile
IN (61500,61532,61536,61547,61543,61526,61524,61512,61515) AND ki.jahr=b.jahr
AND ki.pagid=b.projektid
GROUP BY ki.pagid) AS umsatz,
b.prsituation, b.cbzuag, b.cbengag,
b.cbrifa, b.cbriman,
# Plankosten
(SELECT SUM(k.plan) FROM pim_pb_kue k WHERE k.ident='KOSTAND k.monat=b.monat AND k.jahr=b.jahr
AND k.projektid=b.projektid
GROUP BY projektid) AS plank,
# prognosekosten
(SELECT SUM(k.prognose) FROM pim_pb_kue k WHERE k.ident='KOSTAND k.monat=b.monat AND k.jahr=b.jahr
AND k.projektid=b.projektid
GROUP BY projektid) AS progk,
# Istkosten
(SELECT SUM(ki.vorjahr+ki.jan) FROM pim_p_ist ki WHERE ki.zeile
IN (23112,23132,23135,23162,23165,23170,23183,24753,34512,34832,45012,23182) AND ki.jahr=b.jahr
AND ki.pagid=b.projektid
GROUP BY ki.pagid) AS istk,
# GAAP-Kosten(stunden)
(SELECT SUM(ki.vorjahr+ki.jan)*73 AS ikststd FROM pim_p_ist ki WHERE ki.zeile=14000 AND ki.jahr=b.jahr
AND ki.pagid=b.projektid
GROUP BY ki.pagid) AS istkstd,
p.ende AS planende, b.ende AS progende
FROM pim_pb_berichte b
JOIN pim_p_projekteneu p ON b.projektid = p.projektid
WHERE p.projektstatus = -1 AND b.jahr=2006 AND b.monat=1
ORDER BY p.projektname ASC
Diese Abfrage, bzw. das Erstellen des Views, dauert ca. 13 Sekunden auf meinem Testrechner. Da ich nicht der SQL-Crack bin, möchte ich fragen, ob hier noch Optimierungspotential (aus SQL-logischer Sicht) besteht?

Viele Grüße
Igotcha
  Mit Zitat antworten Zitat