Thema: Delphi SQl Abfrage sehr langsam

Einzelnen Beitrag anzeigen

Delphi.Narium

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

AW: SQl Abfrage sehr langsam

  Alt 25. Jun 2024, 11:03
Wenn DateTime, aber (beide Seiten) ohne Zeitanteil, kann man sich Cast as Date sparen.

Wenn mit Zeitanteil und :EingabeDatum ohne Zeitanteil dann eher sowas: where Datum between :von and :bis
:von wird im Programm mit sowas wie Trunc(Now) und :bis mit Trunc(Now + 1) - 1 / 86400000 (= eine Millisekunde) gefüllt, das ergibt dann sinngemäß sowas wie where Datum between 25.06.2024 00:00:00.000 and 25.06.2024 23:59:59.999
Dann dürfte der Index auch genutzt werden können.

Geht es nur um das Datum ohne Zeitanteil sollte where datum >= Cast(:Eingabedatum as Date) and datum < Cast(:Eingabedatum + 1 as Date) funktionieren. Wenn :Eingabedatum ohne Zeitanteil geliefert wird, verkürzt sich das dann auf where datum >= :Eingabedatum and datum < :Eingabedatum + 1

Der Flaschenhals im Ausgangs-SQL dürfte aber die spaltenweisen Summierungen per Sub-Select sein. Hier muss die Datenbank eine sehr große Menge von Abfragen starten, je Ergebniszeile vier Stück und die jeweils ohne 'nen Index verwenden zu können.
  Mit Zitat antworten Zitat