[firebase-br] Problemas Performance

eduardo eduardo em icontroller.com.br
Qui Nov 4 09:48:28 -03 2004


Obrigado Nilton

Eu não estava realmente certo sobre isso. Há algunm tempo li uma ampla 
discussão sobre isso e, se não me engano, essa característica é uma 
otimização mais ou menos recente, onde 'A%' equivale ao STARTING WITH

Outro coisa sobre esse assunto é que índices não são utilizados para 
ORDER BY.
Valeu, esse tipo de esclarecimento parece ser simples e banal, mas 
contribui bastante para os membros da lista.

Um abraço, Eduardo

Nilton Souza wrote:

>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
>  
>
>
>
>______________________________________________
>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