Qual é mais rápido - Seek ou Locate
Enviado: 01 Dez 2009 12:26
Boa Tarde amigos do forum
Fiz uma pequena rotina em xharbour e estou para perceber qual é mais rápido na pesquisa e filtragem daquilo que quero ou seja entre uma data ou entre datas que é o que eu quero pesquisar.
Com locate funciona tudo muito bem.
Mas e para o comando Seek como faço. Não será mais rápido Seek do que locate que percorre a base de dados inteira.
Estou a pensar numa maneira rápida de obter a condição.
Escolhe a data e a rotina imprime o resultado da pesquisa dessa data. Se for entre datas a rotinha filtra os registos que condizem à condição e fazem o cálculo e imprimem no ecra.
Mas eu estou a prever o futuro.
Se tiver muitos registos.
Qual usar????? find, locate ou seek
E como.
Se tiverem algo diferente e rápido
Alterem o que tiverem que alterar que eu agradeço imenso
Aqui vai a rotina.
Gostaria que me dessem uma dica.
Obrigado
)
Lapinhazzz
Fiz uma pequena rotina em xharbour e estou para perceber qual é mais rápido na pesquisa e filtragem daquilo que quero ou seja entre uma data ou entre datas que é o que eu quero pesquisar.
Com locate funciona tudo muito bem.
Mas e para o comando Seek como faço. Não será mais rápido Seek do que locate que percorre a base de dados inteira.
Estou a pensar numa maneira rápida de obter a condição.
Escolhe a data e a rotina imprime o resultado da pesquisa dessa data. Se for entre datas a rotinha filtra os registos que condizem à condição e fazem o cálculo e imprimem no ecra.
Mas eu estou a prever o futuro.
Se tiver muitos registos.
Qual usar????? find, locate ou seek
E como.
Se tiverem algo diferente e rápido
Alterem o que tiverem que alterar que eu agradeço imenso
Aqui vai a rotina.
Gostaria que me dessem uma dica.
Código: Selecionar todos
function mv_c()
para dia
set centu off
sele 1
use vendas
inde on datactual to datav
rot="CAIXA"
dataa=ctod(' / / ')
datab=ctod(' / / ')
cor(12)
@12,14 clea to 19,50
@12,14 to 20,50
@10,14 say "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
@11,14 say "³ ³"
@12,14 say "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
cor(12)
cur(0)
@13,15 say "Copias a Preto "
@14,15 say "Copias a Cores "
@15,15 say "Total de Copias "
@16,15 say "Valor Copias a Preto "
@17,15 say "Valor Copias a Cores "
@19,15 say "Valor Caixa: "
cor(21)
IF dia=1
cor(12)
@ 11,15 say "Dia:"
cor(51)
@ 11,20 get dataa
read
elseif dia=2
cor(12)
@ 11,15 say "De:"
@ 11,31 say "at‚:"
cor(51)
@ 11,20 get dataa
@ 11,41 get datab
read
endif
cor(51)
cp=0
cc=0
tp=0
tc=0
tt=0
tco=0
go top
STOR "(datactual" to b
STOR "(datactual" to c
STOR "(datactual" to d
STOR ">=(dataa)) .and." to e
STOR "<=(datab) .and. dia=2)" to f
stor "=(dataa) .AND. dia=1)" to i
stor d+e+d+f to g
stor b+i to h
*dataa=dtoc(dataa)
*datab=dtoc(datab)
IF dia =1
loca for &h
ENDIF
IF dia=2
loca for &g
endif
vez=1
do whil .T.
IF found()
if &h
cp=cp+quantp
cc=cc+quantc
tp=tp+totalp
tc=tc+totalc
tt=tt+total
tco=tco+tcopias
endi
if &g
cp=cp+quantp
cc=cc+quantc
tp=tp+totalp
tc=tc+totalc
tt=tt+total
tco=tco+tcopias
wait vez
vez=2
endi
endi
@ 16,20 say "quant copias pretas"+str(cp)
@ 17,20 say "quant copias cores"+str(cc)
@ 18,20 say "quat pretas+quant cores total copias"+str(tco)
@ 19,20 say "Total valor pretas"+str(tp)
@ 20,20 say "total valor cores"+str(tc)
@ 21,37 say "total caixa"+str(tt)
wait" "
cont
IF eof()
exit
ENDIF
enddo
IF dia=1
@11,20 say dataa
elseif dia=2
@11,20 say dataa
@11,41 say datab
endif
cor(12)
cur(0)
@13,40 say str(cp)
@14,40 say str(cc)
@15,40 say str(tco)
@16,37 say str(tp)
@17,37 say str(tc)
cor(51)
@ 19,37 say str(tt)
wait ""
set cent on
cp=0
cc=0
tp=0
tc=0
tt=0
tco=0
rot="MAIN"
return
Lapinhazzz