[firebase-br] Problemas Performance

Eduardo Jedliczka eduardo em gerasoftinfo.com.br
Qui Nov 4 08:28:48 -03 2004


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
>





Mais detalhes sobre a lista de discussão lista