[firebase-br] Posso ficar Ativando e Desativando um Indicedurante um programa?

Marco Antonio Abreu mabreu em itquality.com.br
Ter Mar 11 10:34:37 -03 2008


Olá Chico,

o fato desse índice pelo SALDOTOTAL agilizar o select é estranho, pois o 
campo não é usado nas clausulas JOIN ou WHERE. Talves seja melhor você 
rever sua estrutura do BD. Para agilizar um select devem existir índices 
pelos campos utilizados nas clausulas JOIN, WHERE, ORDER BY e HAVING.  
Existem índices pelos campos que são utilizados nessas clausulas?  Este 
select está completo ou existe um ORDER BY pelo campo SALDOTOTAL?

Fique atento a índices para campos de valor ou quantidade. Isso, 
normalmente, indica algum problema na estrutura do BD, na lógica 
utilizada ou ainda no projeto em si.  Mas nem sempre é verdade. As 
vezes, por exemplo, um select muito utilizado com um order by por um 
valor pede um indice por este campo. Se este campo não é muito 
atualizado, vale a pena.

[]'s,

Marco Antonio Abreu
IT Quality Systems
mabreu em itquality.com.br
http://www.itquality.com.br



Chico wrote:
> Opa Carlos, segue abaixo:
>
> Esse é o Select que antes ficava lento, aí eu criei o indice no campo 
> SALDOTOTAL da tabela SALDONOTAFISCAL e ele de 1 minuto foi para 3 
> segundos de execução:
>
> Select SNF.*, P.DESCRICAO, C.DATAENTRADA, C.DATANOTA from 
> SALDONOTAFISCAL SNF
> INNER JOIN PLANO P ON SNF.CONTAREDUZIDA = P.CONTAREDUZIDA
> INNER JOIN CONTAPAGARNF C ON (SNF.NUMERONF = C.NUMERONF and 
> SNF.LANCAMENTO = C.LANCAMENTO)
> Where SNF.DATA = '31.01.2008' and
>            C.DATANOTA <= '30.09.2007'
>
>
> Porém, apos ter criado o indice, o update ficou lento, ai eu desativei o 
> indice e ficou melhor, segue o update abaixo:
> Update SALDONOTAFISCAL
> set
> SALDONF      = 0,
> SALDOPARCELA = 0,
> SALDODESCONTO = 0,
> SALDODEVOLUCAO = 0,
> SALDOTOTAL = 0
> Where DATA BETWEEN '01.01.2007' and '31.01.2008'
>
> Abraços.
> Chico.
>
>
> Carlos Humberto escreveu:
>   
>> Pode passar detalhes sobre os campos da tabela, os indices e a rotina de 
>> update?
>> Acredito que uma PLAN resolveria seu problema de uma forma mais clean ou 
>> seja, sem a necessidade de desativação do(s) indice(s).
>>
>>
>>
>> ----- Original Message ----- 
>> From: "Felipe Aron" <felipearon em gmail.com>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Monday, March 10, 2008 10:22 AM
>> Subject: Re: [firebase-br] Posso ficar Ativando e Desativando um 
>> Indicedurante um programa?
>>
>>
>> Entendi.... isso é interessante... e se for confiável a fazer isso eu tb
>> irei usar esse método.
>> Meu único medo é que corrompa os dados ou o índice por ficar ativando e
>> desativando toda hora !!
>>
>> 2008/3/10 Chico <chico em auditecmatao.com.br>:
>>
>>   
>>     
>>> Então Felipe, o ganho para mim foi bom sim.
>>> Deixa eu explicar o que vem acontecendo.
>>> Antes eu não tinha criado o indice no campo desta tabela. Quando eu
>>> fazia o Update, ela ia bem. Mas aí como eu percebi que um select que
>>> usava esse campo que não tinha indice demorava 1 minuto ou até mais, eu
>>> criei o indice para este campo. Porém, depois, percebi que o update que
>>> eu já usava, começou a demorar. Então eu desativei o indice que eu havia
>>> criado e o update voltou a ficar bom de novo. Ou seja, se eu puder
>>> ativar e desativar o indice conforme essa minha necessidade. Eu vou ter
>>> um select e um update com boa performance.
>>> Eu só preciso saber mesmo, se posso usar isso rotineiramente.
>>> Abraços.
>>> Chico.
>>>
>>> Felipe Aron escreveu:
>>>     
>>>       
>>>> Entendi... li isso no livro do Cantu e iria fazer a mesma pergunta....
>>>>       
>>>>         
>>> mas é
>>>     
>>>       
>>>> bom ficar ativando e desativando os indices ? Não terei algum problema
>>>>       
>>>>         
>>> ao
>>>     
>>>       
>>>> fazer isso ??? Ainda não testei desativar os indices para gravação...
>>>>       
>>>>         
>>> queria
>>>     
>>>       
>>>> ver o ganho de performance... é bom ????
>>>>
>>>> On Mon, Mar 10, 2008 at 7:39 AM, Chico <chico em auditecmatao.com.br>
>>>>       
>>>>         
>>> wrote:
>>>     
>>>       
>>>>       
>>>>         
>>>>> Exatamente Felipe!!
>>>>> Eu faço um update geral nessa tabela!
>>>>> Abraços.
>>>>> Chico.
>>>>>
>>>>> Felipe Aron escreveu:
>>>>>
>>>>>         
>>>>>           
>>>>>> Você está desativando os indices pra poder gravar grande quantidades
>>>>>>           
>>>>>>             
>>> de
>>>     
>>>       
>>>>>> dados ???
>>>>>>
>>>>>>
>>>>>> 2008/3/9 renato <centriscorps em gmail.com>:
>>>>>>
>>>>>>
>>>>>>
>>>>>>           
>>>>>>             
>>>>>>> Poder acredito que pode. Mas qual a finalidade de se fazer isso?
>>>>>>>
>>>>>>> Renato
>>>>>>> ______________________________________________
>>>>>>> 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://firebase.com.br/pesquisa
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>             
>>>>>>>               
>>>>>>           
>>>>>>             
>>>>> --
>>>>> Abraços
>>>>> Chico
>>>>>
>>>>> ______________________________________________
>>>>> 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://firebase.com.br/pesquisa
>>>>>
>>>>>
>>>>>         
>>>>>           
>>>>       
>>>>         
>>> --
>>> Abraços
>>> Chico
>>>
>>> ______________________________________________
>>> 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://firebase.com.br/pesquisa
>>>
>>>     
>>>       
>>
>>   
>>     
>
>   




Mais detalhes sobre a lista de discussão lista