| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/12/2011 15:18:11
|
janjan
JavaEvangelist
![[Avatar]](/images/avatar/ead79bebb88514b1e270b8856af6fce1.png)
Membro desde: 25/09/2008 18:44:25
Mensagens: 434
Offline
|
Olá pessoal,
Seguinte
precisei criar umas rotinas em sql pra rodar elas no braço pra atualizar um volume grande de informações
e axei melhor criar varios updates e ir executando eles na sequencia um do outro e tals..
como padrao fiz um select e no resultado do select faço os updates..
meu select ficou assim mais ou menos
me digam por que a ultima consulta foi instantanea!!!!
tá não vou mentir
3 segundos
mas sendo que todas outras demoravam 15,30,50 segundos
a base esta no postgres 8.04
valeu!!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/12/2011 15:54:02
|
jsimon
What is classpath?
![[Avatar]](/images/avatar/54bc24376e2371a85d8581f7073a1ae5.jpg)
Membro desde: 16/04/2010 08:23:36
Mensagens: 8
Offline
|
Isso acontece porque a função coalesce não te retornará os registros null, apenas se todos os argumentos que você passou forem null. Assim, como há menos registros para retornar, a consulta se torna mais rápida.
Espero ter ajudado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/12/2011 15:56:41
|
janjan
JavaEvangelist
![[Avatar]](/images/avatar/ead79bebb88514b1e270b8856af6fce1.png)
Membro desde: 25/09/2008 18:44:25
Mensagens: 434
Offline
|
simples assim? hehe
no momento que faço o coalesce ele já filtra e depois filtra novamente com a condição diferente de vazio?
isso?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/12/2011 18:14:12
|
evefuji
GUJ Ranger
Membro desde: 14/12/2007 22:37:17
Mensagens: 753
Offline
|
faz um explain na consulta e analisa melhor. http://www.postgresql.org/docs/8.1/static/sql-explain.html
Bom, se você não mudou nada nas condições, é porque o coalesce filtrou muitos registros antes do left join, e só depois disso fez o cruzamento. Possivelmente o otimizador de consultas do postgre filtrou registros pelo coalesce antes do left join por haver alguma foreign key indicando o cruzamento. Para melhorar desempenho em inner joins, o melhor é cruzar com chaves primárias.
|
|
|
 |
|
|
|
|