Boa noite amigos, preciso de uma ajuda, utilizo em um cliente uma rotina bem simples para criar um DBF (PROD.DBF) com o resultado de uma pesquisa a partir de um outro DBF (PRODUTO.DBF), onde o cliente digita por exemplo "AMARELO" e a rotina joga todos os produtos que contenham a palavra AMARELO no arquivos destino (PROD.DBF), bem isso em CLIPPER levava em media 2 segundos, no HARBOUR leva 8 segundos, o arquivo origem (PRODUTO.DBF) contem 22.000 registros, o que pode ser??
#include "hbgtinfo.ch"
#include "wvtwin.ch"
#include "hbgtwvg.ch"
#include "hbdyn.ch"
#include "inkey.ch"
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_GT_WVT_DEFAULT
REQUEST HB_GT_WVT
Function Main() //no PRG principal (inicial) tem que ter esta funcao MAIN
CLS
CLOSE ALL
SELECT 1
USE PRODUTO
IF ! FILE("ACESS.NTX") .OR. !FILE("EDU.NTX")
INDEX ON CODIGO TO ACESS
INDEX ON DESCRICAO TO EDU
SET INDEX TO ACESS, EDU
ELSE
SET INDEX TO ACESS, EDU
ENDIF
SELECT 2
USE PROD
ZAP
DO WHILE .T.
cPESQ=SPACE(30)
@10,10 SAY "PESQUISA ..: " GET cPESQ PICTURE [@K!]
READ
IF LASTKEY()=27
EXIT
ENDIF
T1=TIME()
xTOT=0
xTEM=0
SELECT PROD
ZAP
SELECT PRODUTO
SET ORDER TO 2
GO TOP
DO WHILE !EOF()
xTEM++
IF ALLTRIM(cPESQ) $ PRODUTO->DESCRICAO //procuro primeiro parte no nome
xTOT++
SELECT PROD
DBAPPEND()
REPLACE CODIGO WITH PRODUTO->CODIGO, DESCRICAO WITH PRODUTO->DESCRICAO,;
PRECOVENDA WITH PRODUTO->PRECOVENDA, ESTOQUE WITH PRODUTO->ESTOQUE
SELECT PRODUTO
ENDIF
@15,10 SAY xTOT
@15,25 SAY xTEM
SKIP
ENDDO
T2=TIME()
@18,10 SAY T1
@19,10 SAY T2
ENDDO