Buscando informações da docum-est. Pessoal vejam o find abaixo, ele é terrivelmente lento. Código: FIND FIRST docum-est WHERE docum-est.serie-docto = tt-movto-mapa-rec.serie-docto AND int(docum-est.nro-docto) = tt-movto-mapa-rec.nro-docto AND docum-est.cod-emitente = tt-movto-mapa-rec.cod-emitente AND docum-est.nat-operacao = tt-movto-mapa-rec.nat-operacao NO-LOCK NO-ERROR. IF NOT AVAIL docum-est THEN NEXT. A melhor maneira de se fazer essa consulta é usando o seguinte find Código: FIND FIRST docum-est WHERE docum-est.serie-docto = tt-movto-mapa-rec.serie-docto AND docum-est.nro-docto = string(tt-movto-mapa-rec.nro-docto , "9999999") AND docum-est.cod-emitente = tt-movto-mapa-rec.cod-emitente AND docum-est.nat-operacao = tt-movto-mapa-rec.nat-operacao NO-LOCK NO-ERROR. IF NOT AVAIL docum-est THEN NEXT. O motivo disso é a conversao que é feita no campo nro-docto, essa conversao faz com que o Progress faca uma linear search na tabela, pois ele nao tem como verificar a condicao antes de converter o valor.
Qualquer função ou calculo na condição do 'where", o SGBD faz o tablescan... que é terrível para performance.