wilmau Geschrieben 2. Februar 2005 Teilen Geschrieben 2. Februar 2005 Hallo, ist es realistisch das dass ausführen des Folgenden SQL-Commandos ca 1,5 sec dauern könnte? Mein Chef sagt es müsste schneller gehen, habe aber keine Anung wie ich das anstellen soll! !Danke für jeden Tipp(Hilfe)! Das Sql_Commando wird von einem Client zu einem Server auf der die Datenbank ist geschikt. Datenbank: MySql4.1 im Commando sind 3 Sub-Select's und 2 Sub-Sub-Select's Die Datenmenge der einzelnen Tabellen variieren zurzeit um die 800 :mod: SELECT kalkulation_controlling.auftraege.auftragsnr, kalkulation_controlling.auftraege.angebotsnr, kalkulation_controlling.auftraege.auftragstyp, kalkulation_controlling.auftraege.fk_anlagennr, kalkulation_controlling.auftraege.auftragsstatus, kalkulation_controlling.auftraege.kunde, kalkulation_controlling.auftraege.bestellnrkunde, kalkulation_controlling.auftraege.bestelldatum, kalkulation_controlling.auftraege.bezeichnung, kalkulation_controlling.auftraege.produktbereich, kalkulation_controlling.auftraege.projektleiterintern, kalkulation_controlling.auftraege.verkaeufer, kalkulation_controlling.auftraege.techasp, kalkulation_controlling.auftraege.kaufmasp, kalkulation_controlling.auftraege.waehrung, kalkulation_controlling.auftraege.eingabedatum, kalkulation_controlling.auftraege.eingegebenvon, sum(auftragspositionen.gepl_menge*auftragspositionen.gepl_einzelkosten) as Sollkosten_gesamt, TempTable.Istkosten_gesamt, sum(auftragspositionen.vkpreis) as Auftragswert, LeistungsTable.Istkosten_Leistung, LeistungsTable.Sollkosten_Leistung, MaterialTable.Istkosten_Material, MaterialTable.Sollkosten_Material FROM auftragspositionen RIGHT JOIN auftraege ON auftraege.auftragsnr = auftragspositionen.fk_auftragsnr LEFT JOIN (SELECT kalkulation_controlling.auftraege.auftragsnr, sum(kalkulation_controlling.dienstleistungserfassung.menge*kalkulation_controlling.dienstleistungserfassung.kostenproeinheit) as Istkosten_gesamt FROM kalkulation_controlling.auftraege LEFT JOIN kalkulation_controlling.dienstleistungserfassung ON kalkulation_controlling.auftraege.auftragsnr = kalkulation_controlling.dienstleistungserfassung.fk_auftragsnr GROUP BY kalkulation_controlling.auftraege.auftragsnr) As TempTable ON TempTable.auftragsnr = kalkulation_controlling.auftraege.auftragsnr LEFT JOIN (SELECT auftraege.auftragsnr, Dienstleistungen.Sollkosten_Leistung As Sollkosten_Leistung, sum(dienstleistungserfassung.menge*dienstleistungserfassung.kostenproeinheit) as Istkosten_Leistung FROM auftraege LEFT JOIN dienstleistungserfassung ON auftraege.auftragsnr = dienstleistungserfassung.fk_auftragsnr LEFT JOIN (SELECT auftragspositionen.fk_auftragsnr, auftragspositionen.gepl_menge, auftragspositionen.gepl_einzelkosten, sum(auftragspositionen.gepl_menge*auftragspositionen.gepl_einzelkosten) as Sollkosten_Leistung FROM auftragspositionen WHERE auftragspositionen.leistungskategorie = "D" GROUP BY fk_auftragsnr) As Dienstleistungen ON auftraege.auftragsnr = Dienstleistungen.fk_auftragsnr GROUP BY auftraege.auftragsnr) As LeistungsTable ON LeistungsTable.auftragsnr = auftraege.auftragsnr LEFT JOIN (SELECT auftraege.auftragsnr, Materialkosten.Sollkosten_Material As Sollkosten_Material, sum(materialkostenerfassung.menge*materialkostenerfassung.ekpreis) as Istkosten_Material FROM auftraege LEFT JOIN materialkostenerfassung ON auftraege.auftragsnr = materialkostenerfassung.fk_auftragsnr LEFT JOIN (SELECT auftragspositionen.fk_auftragsnr, auftragspositionen.gepl_menge, auftragspositionen.gepl_einzelkosten, sum(auftragspositionen.gepl_menge*auftragspositionen.gepl_einzelkosten) as Sollkosten_Material FROM auftragspositionen WHERE auftragspositionen.leistungskategorie = "M" GROUP BY fk_auftragsnr) As Materialkosten ON auftraege.auftragsnr = Materialkosten.fk_auftragsnr GROUP BY auftraege.auftragsnr) As MaterialTable ON MaterialTable.auftragsnr = auftraege.auftragsnr WHERE auftraege.bestelldatum LIKE "%2005" AND auftraege.auftragsstatus LIKE "%" GROUP BY auftraege.auftragsnr Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 2. Februar 2005 Teilen Geschrieben 2. Februar 2005 Haben die Tabellen Indexe? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
wilmau Geschrieben 2. Februar 2005 Autor Teilen Geschrieben 2. Februar 2005 alle Tabellen haben einen Primärindex (Primärschlüssel) aber keinen extra Index! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
The_red_one Geschrieben 2. Februar 2005 Teilen Geschrieben 2. Februar 2005 AND auftraege.auftragsstatus LIKE "%" kann man sich auf jeden Fall sparen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 2. Februar 2005 Teilen Geschrieben 2. Februar 2005 Das wär doch mal eine Maßnahme. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
wilmau Geschrieben 2. Februar 2005 Autor Teilen Geschrieben 2. Februar 2005 Haben die Tabellen Indexe? habe es jetzt mit zusätzlichem Index versucht-> resultat von ca 1,25 sec auf ca 0,05sec echt Super -> Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
wilmau Geschrieben 2. Februar 2005 Autor Teilen Geschrieben 2. Februar 2005 AND auftraege.auftragsstatus LIKE "%" kann man sich auf jeden Fall sparen! anstelle von "%" kommt ein Parameter hin. Es kann auch sein das nach einem bestimmten Status gefiltert weren muss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.