[firebase-br] Dúvidas sobre índices

Carlos H. Cantu listas em warmboot.com.br
Seg Jun 20 17:22:44 -03 2016


Ter dois indices ao invés de um indice composto tem a vantagem de
possibilitar que o firebird use os indices quando a pesquisa envolver
qualquer um dos campos.

No FB, recomendaria indice composto se ele tiver a função de forçar
unicidade, para os demais casos, é mais vantajoso ter indices
separados, pelas razões acima.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

M> Neste caso, eu faria o teste com o índice composto e com os índices 
M> separados, observando as estatísticas de tempo e o plano gerado pelo 
M> firebird.


M> Em 20/06/2016 15:50, Cláudio Prudente (O2 Tecnologia) escreveu:
>> Obrigado pela resposta Marcelo.
>>
>> Essa parte eu entendi.
>> Se eu fizer o where de um campo somente eu crio o índice só desse campo.
>>
>> E no caso de eu utilizar 2 campos no where? No exemplo abaixo eu já 
>> teria o índice pelo campo nome mas o where utiliza nome e cidade.
>> Como eu já tenho o índice pelo nome eu crio mais um pela cidade ou é 
>> melhor criar um índice composto por nome e cidade?
>>
>> Abraço,
>> Cláudio
>>
>>
>>
>> Em 20/06/2016 12:49, Marcelo escreveu:
>>> O firebird não usa índices quando a pesquisa é "CONTENDO O TEXTO" 
>>> pois a ocorrência do texto pode estar em qualquer parte do campo e 
>>> portanto o firebird tem que varrer todos os registros. Já quando a 
>>> pesquisa é "INICIANDO COM O TEXTO" o firebird usa o índice 
>>> correspondente ao campo pois ele só vai pesquisar na parte ordenada 
>>> que o texto pode estar.
>>>
>>>
>>> Em 20/06/2016 11:44, Cláudio Prudente (O2 Tecnologia) escreveu:
>>>> Obrigado pela resposta Cantu. Não sabia que não cabiam índices para 
>>>> LIKE.
>>>>
>>>> Então mudando um pouco a pergunta mas mantendo o mesmo foco. Se ao 
>>>> invés de "LIKE" fosse utilizado "="?
>>>>
>>>>
>>>> Em 20/06/2016 11:38, Carlos H. Cantu escreveu:
>>>>> O Firebird não usa índices em pesquisas do tipo LIKE '%algumacoisa%'
>>>>>
>>>>> []s
>>>>> Carlos H. Cantu
>>>>> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
>>>>> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
>>>>>
>>>>> CP> Bom dia.
>>>>>
>>>>> CP> Eu vejo mensagens na lista com bancos de dados de 50gb, 400gb e 
>>>>> até mais
>>>>> CP> e um dos meus clientes com um banco por volta de 20gb está bem 
>>>>> lento.
>>>>> CP> Com certeza posso melhorar a performance com índices bem criados.
>>>>>
>>>>> CP> Eu li muita coisa na internet sobre isso e fiquei com algumas 
>>>>> dúvidas.
>>>>>
>>>>> CP> Vamos supor 2 selects.
>>>>> CP> 1 - Select Nome, Cidade, Estado From Clientes
>>>>> CP>       where ( Nome like '%qualquer coisa%' )
>>>>>
>>>>> CP> Para esse exemplo acima eu criando um índice somente para o 
>>>>> campo Nome é
>>>>> CP> o ideal correto?
>>>>>
>>>>> CP> Agora ao segundo caso.
>>>>> CP> 2 - Select Nome, Cidade, Estado From Clientes
>>>>> CP>       where ( Nome like '%qualquer coisa' ) and ( Cidade = 'São 
>>>>> Paulo' )
>>>>>
>>>>> CP> Para esse exemplo eu já teria o índice por nome. Pelo que 
>>>>> entendi dos
>>>>> CP> índices do firebird se eu tiver um índice para Cidade criado o 
>>>>> plan iria
>>>>> CP> utilizar os 2 índices criados para me dar o retorno.
>>>>> CP> O melhor a se fazer é criar somente o índice para Cidade ou 
>>>>> mesmo eu já
>>>>> CP> tendo um índice para o Nome eu criaria um outro composto por 
>>>>> Nome e Cidade?
>>>>>
>>>>> CP> Nesse caso eu não usei order by. Estou pensando somente em 
>>>>> índices para
>>>>> CP> where. Seria interessante criar índices para a ordenação?
>>>>>
>>>>> CP> Obrigado pessoal.
>>>>>
>>>>> CP> Cláudio
>>>>>
>>>>> CP> ______________________________________________
>>>>> CP> FireBase-BR (www.firebase.com.br) - Hospedado em 
>>>>> www.locador.com.br
>>>>> CP> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>>> CP> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>> CP> Para consultar mensagens antigas:
>>>>> CP> http://www.firebase.com.br/pesquisa_lista.html
>>>>>
>>>>>
>>>>> ______________________________________________
>>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>> Para consultar mensagens antigas: 
>>>>> http://www.firebase.com.br/pesquisa_lista.html
>>>>>
>>>>
>>>>
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: 
>>>> http://www.firebase.com.br/pesquisa_lista.html
>>>>
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: 
>>> http://www.firebase.com.br/pesquisa_lista.html
>>>
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: 
>> http://www.firebase.com.br/pesquisa_lista.html
>>


M> ______________________________________________
M> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
M> Para saber como gerenciar/excluir seu cadastro na lista, use:
M> http://www.firebase.com.br/fb/artigo.php?id=1107
M> Para consultar mensagens antigas:
M> http://www.firebase.com.br/pesquisa_lista.html





Mais detalhes sobre a lista de discussão lista