Função ORDWILDSEEK()

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Função ORDWILDSEEK()

Mensagem por Eolo »

Esta vai pro meu amigo Leonardo Sygecom, o meu padrinho no XHarbour...

Bão, capaz de alguém já ter postado algo a respeito dessa função ORDWILDSEEK(), nem conferi. Mas, se já, que me perdoem. É que a coisa é boa, mesmo!

Dados: arquivo PRODUTOS.DBF com 15.664 registros, 21 campos, tamanho total de cada registro = 285, indexado via CDX, 7 tags, blablabla, rodando xHarbour console num AMD Athlon 1.5Ghz, 512 de RAM... Mandei procurar pelo substring "PESSEGO"...Resultado: em menos de 1 segundo, o achoice() com 138 ocorrências explodiu na tela...

Caraca! Como não migrei pro XHarbour antes????

Código: Selecionar todos

use produtos
set index to produtos
set orde to 1 // NOME do produto, caracter, tamanho 60
go top
priv lista:={}
?time() //-> início: 16:45:39
do while ordwildseek("*PESSEGO*",.t.)
  * procura produtos que contenham "PESSEGO" no nome, em qq posição,
  * do começo pro fim do arquivo = o argumento .T.
  * e adiciona esses nomes à matriz LISTA 
  aadd(lista,field->nnome)
endd
?time() //-> final: 16:45:39 PO, NUM DEU TEMPO DE MUDAR O RELÓGIO!...
wait len(lista) // -> 138
achoice(05,11,22,70,lista,.t.,,)
quit
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Pois é meu amigo. É o bicho !!! O código abaixo é de uma rotina de pesquisa parecida com a sua, porém em MySql com Mediator.
Em 0,33 segundos retornou + ou - 700 registros

Código: Selecionar todos

cr1:= "select clicod,clinom from cdcli000 where clinom like '%"
cr2:= "%' order by clinom"
local5:= seconds()
use (netname()) as cr1+rtrim(pesq_incr)+cr2 new scrollable overwrite
local6:= seconds()
if reccount() = 0
   RstEnv(Seek1)
   wvt_messagebox("Nao foi encontrado nenhum resultado.","ATENCAO",48)
   public env:= ((netname())->clinom)
   close (netname())
   select(Seek2)
   ordsetfocus("indcli02")      
   return nil
endif
nom = "C¢digo - RazÆo Social"
RstEnv(Seek1)
win(05,09,17,60,trim(str(reccount()))+;
iif(reccount() > 1," Cli. Encontrados"," Cli. Encontrado")+space(5)+str(local6-local5)+" Seg's","gr+/g","g/b")
iTb4:= tbcolumnnew(Nom, { || tran(clicod,"999999-9")+"  "+clinom })
iTb3:= TbrowseDB(06,10,16,59)
Quando vi quase caí da cadeira.
Fascinante. :-O :-O :-O
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Eolo, o mérito é todo seu....
Agora sobre o MYSQL parece piada mesmo...o negocio voooaaa baixo....
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

alaminojunior escreveu:

Código: Selecionar todos

cr1:= "select clicod,clinom from cdcli000 where clinom like '%"
cr2:= "%' order by clinom"
Eolo ,é sobre isso que havia comentado com voce anteriormente .... ;)
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Po, "MySql com Mediator"?! É mais um da série Allien vs Predator? eh eh eh

Caras, por enquanto, DBF direto, rede local. Daqui um tempinho (logo!), vou ter que partir pra SQL, acesso remoto, aí vou ter que aprender esse trem ae...
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

Pessoal,

Fiz um teste semelhante com MySql + Mediator.

Arquivo de vendas com 72.000 registros... 10 chaves... 38 campos...

Fiz uma rotina pra mostrar todas as vendas de um determinado cliente. Em menos de 1.5s o 5.278 registros apareceram no meu tbrowse.

Muito bom.


Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder