Announcement

Collapse
No announcement yet.

Abfrage zu langsam

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abfrage zu langsam

    Delphi2007, Firebird 2.1.1, WinXP, FIBPlus-Komponenten

    Folgende, auf dem Client als Query ausgeführte Abfrage, dauert zwischen 3 und 6 Minuten, je nach PC-Ausstattung (in der Datenbank befinden sich in der Tabelle WAEBEWEGUNGEN ca. 100.000 Datensätze):

    select W.WBID,W.KID,W.MID_E,W.MID_A,W.WID,W.ANZAHL,W.ADAT UMSYS,W.ADATUM,
    W.EDATUMSYS,W.EDATUM,W.ZUSATZTEXT,W.EINGANG,W.AUSG ANG,W.ANZAHL_A,
    M.NAME AS ENAME,B.NAME AS ANAME,A.MATCHCODE,A.ARTIKELNR
    from WAEBEWEGUNGEN W
    left outer join MITARBEITER M on W.MID_E=M.MID
    left outer join MITARBEITER B on W.MID_A=B.MID
    left outer join WAESCHE A on W.WID=A.WID
    where KID='''+KdNr+'''
    and (W.EDATUM between '''+Datum1+''' and '''+Datum2);

    Frage: Macht es Sinn und kann man überhaupt so eine Abfrage als StoredProcedure umsetzen, da es ja eine ganze Reihe von Daten als Antwort gibt und diese dann in einer Tabelle übersichtlich dargestellt werden?

    Hartmut

  • #2
    Hallo,

    * wie sieht denn der Zugriffsplan aus?
    * wieviele Datensätze erwartest du dir da cirka?


    Thomas
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Hallo Thomas,

      was verstehst Du unter "Zugriffsplan"???

      Als Anwort ergeben sich je nach Abfragezeitraum einige wenige bis ein paar hundert Datensätze.

      Gruss,

      Hartmut

      Comment


      • #4
        Hallo,

        der Zugriffsplan ist der Weg den der Optimizer der Engine wählt, um an die Daten zu kommen. Dieser gibt Aufschluß darüber, ob z.B. Indizes verwendet wurden, usw ...

        Führ einfach mal das Statement in deinem Firebird-Entwicklungstool aus, das mit Sicherheit eine Möglichkeit bietet, den Plan auszugeben. z.B. irgendetwas mit PLAN ...

        Thomas
        Thomas Steinmaurer

        Firebird Foundation Committee Member
        Upscene Productions - Database Tools for Developers
        Mein Blog

        Comment


        • #5
          Hallo Thomas,

          also: ich habe das SQL-Script mal direkt in BlazeTop von Devrace laufen lassen, um zu dem Zugriffsplan zu kommen - tja, und da gab's dann eine Überraschung: die Antwort war nach wenigen Sekunden da... Ursache: ich habe vor der Abfrage im Programm noch eine ComboBox gefüllt und dieses Füllen hat mir die "Zeit geklaut"...also falscher Alarm.

          Trotzdem Danke für die Unterstüzung!

          Was mich aber noch interessiert ist, kann eine solche Abfrage sinnvoll in eine StoredProcedure umgesetzt werden?

          Gruss,

          Hartmut

          Comment


          • #6
            Ja, warum nicht?

            Comment


            • #7
              Hallo Markus,

              naja, es sind zwar nur drei Eingabe-Parameter aber eine ganze Reihe von Daten auszugeben (da war irgendwas mit dem suspend-Befehl, oder?). Daher die Frage nach einer "sinvollen" Umsetzung.

              Hartmut

              Comment


              • #8
                Ja, mit suspend werden die aktuelle Werte der OUT-Parameter als Datensatz an den Client übergeben

                Comment

                Working...
                X