[firebase-br] RES: RES: RES: Estudo de Caso - Como otimizar esteupdate

Rafael Helm - Trevisan Tecnologia rhelm em trevisantecnologia.com.br
Qui Ago 21 11:07:22 -03 2008


Bom dia Cantu e colegas da lista.

Segue o plano dos updates, estou tentando otimizar o segundo caso:

------------------------------------
CASO 1:

UPDATE LOCALATENDIMENTO
SET LOC_DADOATUALIZADO = '1'

 - TEMPO DE EXCEUCAO: 8 SEGUNDOS

 - TOTAL DE REGISTROS DA TABELA: 21.688

 - REGISTROS ATUALIZADOS: 21.688

 - PLANO DE EXECUÇÃO:

   Plan
   PLAN (LOCALATENDIMENTO NATURAL)

   Adapted Plan
   PLAN (LOCALATENDIMENTO NATURAL)

------------------------------------
CASO 2:

UPDATE LOCALATENDIMENTO
SET LOC_DADOATUALIZADO = '1'
WHERE  LOC_DADOATUALIZADO = '0' AND
       LOC_CODIGO IN (SELECT LOC_CODIGO
                     FROM TAREFA
                     WHERE AGE_CODIGO = 339 AND
                           SIT_CODIGO = 40);

 - TEMPO DE EXCEUCAO: 00:01:13 (1 MINUTO E 13 SEGUNDOS)

 - TOTAL DE REGISTROS DA TABELA: 21.688

 - REGISTROS ATUALIZADOS: 426

 - PLANO DE EXECUÇÃO:

   Plan
   PLAN (TAREFA INDEX (RDB$FOREIGN109,RDB$FOREIGN108,RDB$FOREIGN106))
   PLAN (LOCALATENDIMENTO NATURAL)

   Adapted Plan
   PLAN (TAREFA INDEX (INTEG_438,INTEG_437,INTEG_435)) PLAN
(LOCALATENDIMENTO NATURAL)

------------------------------------
CASO: 3

Utilizando "EXISTS" ao invés do "IN" a performance é a mesma e o plano
também.

UPDATE LOCALATENDIMENTO L
SET L.LOC_DADOATUALIZADO = '1'
WHERE LOC_DADOATUALIZADO = '0' AND
      exists (SELECT 1 FROM TAREFA T
              WHERE T.LOC_CODIGO = L.LOC_CODIGO AND
                    AGE_CODIGO = 339 AND
                    SIT_CODIGO = 40);

------------------------------------

Rafael Helm.

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Carlos H. Cantu (TeamFB)
Enviada em: quarta-feira, 20 de agosto de 2008 18:08
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] RES: RES: Estudo de Caso - Como otimizar
esteupdate

Não, se o update sem o "where" está rápido, isso indica que o gargalo
está justamente no "where".

Qual eh o plan gerado para a instrução com o where?

[]s
Cantu (Membro do TeamFB - FireBase)
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br
Blog - http://blog.firebase.com.br

RHTT> Cantu, se eu executar:
RHTT>  
RHTT>   UPDATE TABELA1 T1 SET T1 CAMPO1 = 'X'

RHTT> Eu estarei atualizando todos os registros da tabela, e esta execução é
muito
RHTT> rápida, então teria sentido desabilitar os índices para melhorar a
RHTT> performance da outro comando update que esta atualizando menos
registros e
RHTT> levando mais tempo?

RHTT> Estou te perguntando para entender melhor teu modo de vista.

RHTT> Rafael Helm. 

RHTT> -----Mensagem original-----
RHTT> De: Carlos H. Cantu (TeamFB) [mailto:listas em warmboot.com.br] 
RHTT> Enviada em: quarta-feira, 20 de agosto de 2008 17:27
RHTT> Para: Rafael Helm - Trevisan Tecnologia
RHTT> Assunto: Re: RES: [firebase-br] Estudo de Caso - Como otimizar este
update

RHTT> Se o campo1 for indexado, vc pode obter algum ganho desligando o
RHTT> indice antes de fazer o update, e re-ligando depois.

RHTT> []s
RHTT> Cantu (Membro do TeamFB - FireBase)
RHTT> http://www.warmboot.com.br
RHTT> FireBase - http://www.FireBase.com.br
RHTT> Blog - http://blog.firebase.com.br

RHTT>> Obrigado pela dica Cantu, mas infelizmente a performance foi
RHTT> praticamente a
RHTT>> mesma.

RHTT>> Rafael Helm.



______________________________________________
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

-- 
Esta mensagem foi verificada pelo sistema de antivírus e
 acredita-se estar livre de perigo.

No virus found in this incoming message.
Checked by AVG - http://www.avg.com 
Version: 8.0.138 / Virus Database: 270.6.6/1623 - Release Date: 20/8/2008
08:12


-- 
Esta mensagem foi verificada pelo sistema de antivírus e
 acredita-se estar livre de perigo.





Mais detalhes sobre a lista de discussão lista