Klassvar 100x langsamer wie LOCAL?

SQL Express von Boris Borzic

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Klassvar 100x langsamer wie LOCAL?

Beitrag von satmax »

Folgendes ist mir völlig unerklärlich:

Hier dauert das Execute ca. 10 Sekunden

Code: Alles auswählen

::oCursor:SQLString := "SELECT top 1  " + AuftragFelder;
              " FROM Auftrag WHERE typAuftrag BETWEEN (?) AND (?) "+;
              " ORDER BY _ID DESC"
DebugPrint("Switch Filter 7", ::NavigateTypAuftragTo)
 	nTreffer:= ::oCursor:Execute({0, 99})           // DAUER 10 ca. Sekunden
DebugPrint("Switch Filter 8", ::NavigateTypAuftragTo)

Hier dauert die gleiche Abfrage nicht mal 0,1 Sekunden, inkl. cFelder:= ::AuftragFelder :

Code: Alles auswählen

Local cFelder
...
cFelder:=::AuftragFelder
 	::oCursor:SQLString := "SELECT top 1  " + cFelder + ;
              " FROM Auftrag WHERE typAuftrag BETWEEN (?) AND (?) "+;
              " ORDER BY _ID DESC"
DebugPrint("Switch Filter 7", ::NavigateTypAuftragTo)
 	nTreffer:= ::oCursor:Execute({0, 99})      // Dauer nicht messbar < 0,1 
DebugPrint("Switch Filter 8", ::NavigateTypAuftragTo)
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Klassvar 100x langsamer wie LOCAL?

Beitrag von satmax »

Ändere ich die Classen-Methode in eine Funktion (aus :: wird oDlg, oDlg wird der Funktion übergeben), funktioniert das ebenfalls einwandfrei:

Code: Alles auswählen

oDlg:oCursor:SQLString := "SELECT top 1  " + oDlg:AuftragFelder + ;
              " FROM Auftrag WHERE typAuftrag BETWEEN (?) AND (?) "+;
              " ORDER BY _ID DESC"
DebugPrint("Switch Filter 7-", oDlg:NavigateTypAuftragTo)
 	nTreffer:= oDlg:oCursor:Execute({0, 99})
DebugPrint("Switch Filter 8-", oDlg:NavigateTypAuftragTo)
Gruß
Markus
Antworten