Hallo, vielleicht kann und will mir jemand helfen:
Folgendes
SQL script habe ich laufen (Delphi mit FireDac
Access) und funktioniert einwandfrei.
Select Top 30 * from
(SELECT ABFStatKundenNr, sum(ABFStatUmsatz) as total from ABFStat WHERE ABFStatDatum > #01/01/2023#
and ABFStatKundenNr IN
(SELECT PersKtoNummer FROM sPersKto WHERE PersKtoArt = 68 )
group by ABFStatKundenNr)
order by total desc;
Hier werden die Top30 Kunden mit Kundennummer und Umsatz gelistet.
Problem: Es dauert 10 sek. bis das Ergebnis ausgewertet ist.
Frage: Könnte man das
sql umschreiben damit es schneller ist? Ich habe schon einiges probiert, komme aber nicht weiter.
Naja, die
Query engine muss halt den
kompletten Ergebnissatz zusammensammeln und sortieren, bevor es die ersten 30 identifizieren und zurückliefern kann. Da kann man nur versuchen, die Subqueries zu beschleunigen. Hat ABFStat einen Index auf ABFStatDatum, hat sPersKto einen auf PersKtoArt? Hast Du versucht die IN-
Query durch einen JOIN zu ersetzen?