Does the ge operator slows down performance ?

make

Member
Hi !
I use a query like this :

for each Kunden
where (Kunden.k-nr ge int(Kunde-Feld:Screen-Value))
and (Kunden.k-nr le int(Kunde-FeldBis:Screen-Value))
and (kunden.kto-gesperrt = false ) no-lock .


ASSIGN StatusFill:Screen-Value = "STATUS : Suche nach Kunde: " + STRING(kunden.k-nr)+ "/" + string(kunden.name1).
find first lfschein where lfschein.k-nr = Kunden.k-nr
and lfschein.versanddatum >= ChVon
no-lock no-error.
.....

This result comes slow.ChVon greater or equal than the actual day.
When i use "today" instead of >= ChVon the result comes much faster.
But i cant use the today function, because i my query i have to over more than days.
What can i do ?

Thanks for help.
Make
 

bendaluz2

Member
Try this

It is slow because you have a function in your query. It has to work out the result of your function for every record. This should be avoided at all costs, because it confuses the compiler and will almost certainly not use an index.

Do this instead:

def var iKunde-Feld as integer no-undo.
def var iKunde-FeldBis as integer no-undo.

assign iKunde-Feld = int(Kunde-Feld:Screen-Value)
iKunde-FeldBis = int(Kunde-Feld:Screen-Value).

for each Kunden
where Kunden.k-nr ge iKunde-Feld
and Kunden.k-nr le iKunde-FeldBis
and kunden.kto-gesperrt = false no-lock .


ASSIGN StatusFill:Screen-Value = "STATUS : Suche nach Kunde: " + STRING(kunden.k-nr)+ "/" + string(kunden.name1).
find first lfschein where lfschein.k-nr = Kunden.k-nr
and lfschein.versanddatum >= ChVon
no-lock no-error.
 
Top