Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#2

AW: Access SQL Query optimieren?

  Alt 14. Jan 2024, 13:03
Das kenne ich auch von FireBird.

Ab der zweiten Abfrage wird's schneller, weil ein Teil der Datenbankdatei bereits gelesen wurde und damit im Cache der Festplatte liegt.

Wenn Du lange wartest und in der Zeit andere Programme die Festplatte extensiv nutzen, wird die Abfrage wieder einmal langsamer werden und beim zweiten Mal wieder schneller.

Das Problem liegt eher an Windows und der Hardware als an der Datenbank.

SQL-Code:
SELECT
  ABFDocAuftragNr,
  ABFDocDatum,
  ABFDocKundeKurzbez,
  IIF(Count(ABFDocAuftragID) > 1,Max(ABFPosMenge) - Min(ABFPosMenge), Max(ABFPosMenge)) as offen
FROM
(
  ABFDok
  INNER JOIN ABFPos ON ABFPos.ABFPosAuftragID = ABFDok.ABFDocAuftragID
)
INNER JOIN sArtikel ON ABFPos.ABFPosArtNr = sArtikel.ArtNr
where ABFDocOptFertig = false
  and ABFDocVisType = 1
  and ABFPosEPreis > 0
  and ABFPosType in(0,7)
  and ABFPosNr <>'
  and ABFPosArtNr = :ArtNr
GROUP BY
  ABFDocAuftragNr,
  ABFDocDatum,
  ABFDocKundeKurzbez,
  ABFdocVisType
order by
  ABFDocAuftragNr;
Zu welcher Tabelle gehören diese Einschränkungen?
SQL-Code:
where ABFDocOptFertig = false
  and ABFDocVisType = 1
  and ABFPosEPreis > 0
  and ABFPosType in(0,7)
  and ABFPosNr <> '
  and ABFPosArtNr = :ArtNr
Eventuell solltest Du die entsprechende(n) Tabelle(n) erst per Wherebedingung einschränken und dann per Join die anderen Tabellen dazunehmen.

Wie sehen die Tabellendefinitionen aus? Wie sehen die Indexdefinitionen aus?

Geändert von Delphi.Narium (14. Jan 2024 um 13:13 Uhr) Grund: Schreibfehler
  Mit Zitat antworten Zitat