[firebase-br] Problemas Performance

Nilton Souza ntn em bbs2.sul.com.br
Qui Nov 4 09:18:52 -03 2004


Olá Eduardo,

Só para complementar, se for utilizado (like 'A%') ele utiliza o índice para
a pesquisa porém se você utilizar (like '%A') ou (like '%A%') ele não
utiliza.

[]'s
Nilton Souza

----- Original Message -----
From: "Eduardo Jedliczka" <eduardo em gerasoftinfo.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, November 04, 2004 8:28 AM
Subject: Re: [firebase-br] Problemas Performance


> Bom deixe-me defender o meu "chará"...
>
> Select * from CLIENTE where nome like '%A' order by nome desc
>
> NÃO usa índice para busca, pode até usá-lo para realizar um sort (embora
um
> quicksort em memória seja muito mais eficiente doque buscar um índice,
pois
> não há índices que armazenem uma string que termine com... !
>
> Um order by Nome Desc, irá simplesmente trazer os nomes de Z até A, ou
seja,
> Zé, Tavares, Sérgio,... Carlos, Barbosa, Antônio.
>
> Mas voltando ao problema principal, será que você quer saber "todos" os
> nomes que contenham a letra "A" ??? Acho que não, desenvolvi um aplicativo
a
> mais ou menos quatro anos para catalogar fotos, e precisava pesquisar
> sobrenomes, havia mais de 50.000 registros.
>
> Para resolver o problema de performance, fiz o seguinte, limitei a trazer
no
> máximo 250 registros, e permitir a procura tendo no mínimo 4 caracteres, o
> sistema ficou quase que instantâneo, mesmo com like '%NOME%'.
>
> Agora, se eu tirasse estes dois limites, havia procuras que podiam demorar
> 20 minutos ou mais.
>
> Só um detalhe, este sistema foi desenvolvido em Delphi3, usava BDE com
> paradox, e foi migrado para Zeos com MySQL e por incrível que pareça, com
4
> usuários simultâneos, trabalhando o dia todo, e o sistema continuava
> rápido... Ahhh o servidor era um pentium 100 com 32 MB de RAM rodando
> Windows 95.
>
> [S]
>
> =====================
> Eduardo Jedliczka
> GeraSoft Informática
> Apucarana - PR
> =====================
>
> ----- Original Message -----
> From: "Danilo Rogério" <danilorsa_betta em yahoo.com.br>
> To: "FireBase" <lista em firebase.com.br>; <eduardo em icontroller.com.br>
> Sent: Thursday, November 04, 2004 6:34 AM
> Subject: Re: [firebase-br] Problemas Performance
>
>
> > Caro eduardo discordo um pouco da sua opinião mas a respeito...
> >
> > Se nosso amigo utilizar
> >
> > select * from CLIENTE where nome like '%A' order by nome desc e houver
um
> índice, este será usado...
> > ou ainda
> > select * from CLIENTE where nome like 'A%'  também usa o índice
> >
> > o caso é o order by, que força a utilizá-lo.
> >
> > É isso aí, discutindo, trocando opiniões que a gente aprende...
> >
> > Obrigado,
> > Danilo
> >
> >
> > eduardo <eduardo em icontroller.com.br> wrote:
> > Oi Danilo
> >
> > Uma informação importante nesse caso:
> > Pesquisas com '%' não utilizam índice. Para se valer da indexação, temos
> > que utilizar STARTING WITH
> >
> > [ ]'s Eduardo
> >
> > Danilo Rogério wrote:
> >
> > >Adilson... de uma analisada nos índices que vc tem...
> > >
> > >Tem uma opção no IBExpert que reorganiza-os... (eu acho).
> > >É na coluna Statistics na aba indices da sua tabela.
> > >
> > >Caso não use IBExpert, o script é o seguinte:
> > >
> > >SET STATISTICS INDEX
> > >
> > >Faça isso e veja como ficará sua pesquisa...
> > >
> > >Espero ter ajudado,
> > >Danilo Rogério
> > >
> > >"Adilson B. Cápua Jr." wrote:
> > >PessoALL,
> > >
> > >No meu projeto envolvendo Firebird 1.5 + DBExpress + Delphi 7, me
> > >daparei
> > >com um problema que não faço a mínima idéia do motivo. Para testar a
> > >aplicação,
> > >criei uma base de dados com aproximadamente 60.000 mil registros
> (clientes).
> > >
> > >Numa tela de consulta, permito que o meu usuário digite as iniciais do
> > >cliente e então
> > >faço uma busca usando um select mais ou menos assim:
> > >
> > >SELECT * FROM CLIENTES WHERE NOME_CLIENTE LIKE '%' + Edit1.Text +
> > >' ORDER BY NOME_CLIENTE
> > >
> > >Nota: Preciso usar o * mesmo, pois todos os campos do cadastro são
> > >necessários
> > >na consulta...
> > >
> > >Até ontem (dia 02/11), caso o usuário digitasse por exemplo a letra "A"
> > >e solicitasse
> > >a pesquisa, o banco quase que imediatamente retornava os 6.000 clientes
> que
> > >começam
> > >com a letra "A"... Não sei por que o motivo, esse tempo passou para
quase
> 10
> > >ou 15
> > >segundos... Se eu especificar mais o nome, como "ADILSON" por exemplo,
o
> > >retorno
> > >é quase que imediato... Já quando a query retorna muitos registros,
chega
> a
> > >demorar
> > >bastante...
> > >
> > >Alguém tem alguma idéia do porque disso???
> > >
> > >Qualquer ajuda é bem vinda...
> > >
> > >
> > >[]'s
> > >
> > >
> > >---
> > >Outgoing mail is certified Virus Free.
> > >Checked by AVG anti-virus system (http://www.grisoft.com).
> > >Version: 6.0.788 / Virus Database: 533 - Release Date: 01/11/2004
> > >
> > >______________________________________________
> > >FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> > >Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > >
> > >
> > >---------------------------------
> > >Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador
> agora!
> > >______________________________________________
> > >FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> > >Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > >
> > >
> > >
> > >
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> > Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >
> >
> > ---------------------------------
> > Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador
agora!
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> > Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>





Mais detalhes sobre a lista de discussão lista