[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