Amanha mesmo, estarei testando... muito obrigado Mozart
Em 21 de junho de 2010 22:52, Mozart Hasse escreveu:
> Olá Eduardo,
>
> > Depois de ler a técnica tentei de todo jeito mas não fui muito feliz...
>
> Vamos mudar o placar então.
> Não conheço a regra de negócio dessas tabelas, mas pelo qu
Olá Eduardo,
> Depois de ler a técnica tentei de todo jeito mas não fui muito feliz...
Vamos mudar o placar então.
Não conheço a regra de negócio dessas tabelas, mas pelo que entendi são
duas
subconsultas independentes, sendo assim, vejamos:
* o segundo UNION não pode ter os INNER que você c
-geral/attachments/20100617/ff4727f2/attachment-0001.htm
--
Message: 3
Date: Mon, 21 Jun 2010 15:45:13 -0300
From: Eduardo Amaral
Subject: Re: [pgbr-geral] Otimizar consulta com LEFT JOIN
To: Comunidade PostgreSQL Brasileira
Message-ID:
Content-Type: text/plain; char
Mozar,
Depois de ler a técnica tentei de todo jeito mas não fui muito feliz...
A 1 Parte com Inner, ficou muito RAPIDO
Acho que fiz errado , na segunda parte pq piorou o tempo da query
anterior
essa é a query
(ja tomei de uns 8x0 dela)
---
Oi Priscila,
> Subject: Re: [pgbr-geral] Otimizar consulta com LEFT JOIN
> To: Comunidade PostgreSQL Brasileira
> Porém, se eu executasse desse jeito que está no exemplo, ele não
> reclamaria
> que está faltando entrada para a tabela ps e pf no segundo select? E se eu
> coloca
Olá Mozart,
estava tentando reescrever uma consulta agora a pouco, tentando aplicar
essas sugestões.
Porém, se eu executasse desse jeito que está no exemplo, ele não reclamaria
que está faltando entrada para a tabela ps e pf no segundo select? E se eu
colocasse os inners para essas tabelas não pre
ahahahahaha, tô em estado de graça!
Meu amigo, consegui reduzir uma consulta de faturamento de 67 segundos para
apenas 10 segundos e podendo melhor ainda mais.
--
Abraços..
Marcel Araujo
System Analyst
Developer Java/PHP/RIA
Linux User #490101
http://br.linkedin.com/in/marcelaraujo
http://w
Aham, muito obrigado pela explicação. Irei testar daqui a pouco e darei
retorno.
--
Abraços..
Marcel Araujo
System Analyst
Developer Java/PHP/RIA
Linux User #490101
http://br.linkedin.com/in/marcelaraujo
http://www.twitter.com/marcelaraujo
http://marcelaraujo.tumblr.com/
http://www.marcelara
Oi Marcel,
> Não ficou muito claro para mim a reescrita de uma consulta.
> Como eu faria numa consulta como esta abaixo???
*Assumindo* que turmas_ofertas_professores tem o campo turma_oferta_id não
nulo
*e* que *todo* o professor tem uma referência à tabela pessoas, ficaria:
SELECT tof.id AS tur
Não ficou muito claro para mim a reescrita de uma consulta.
Como eu faria numa consulta como esta abaixo???
*CREATE OR REPLACE VIEW vw_ch_professores_turmas_ofertas AS
SELECT tof.id AS turma_oferta_id, tpo.id AS turma_professor_id, pf.id AS
professor_id, pf.cod_prof, ps.id, ps.nome_pessoa, sum(tp
Muito boa explicação, obrigado!
Em 19/05/2010 19:55, Mozart Hasse escreveu:
> Benedito,
>
>
>>Não sei se minha pergunta é boba, mas:
>> Porque fazer desse jeito é mais eficiente do que fazer um LEFT JOIN?
>>
> A pergunta não é boba não, na realidade a explicação não é nada trivia
Benedito,
> Não sei se minha pergunta é boba, mas:
>Porque fazer desse jeito é mais eficiente do que fazer um LEFT JOIN?
A pergunta não é boba não, na realidade a explicação não é nada trivial.
A resposta mais simples e curta que posso dar é: esse jeito (UNION ALL +
INNER + NOT EXISTS) é m
>
>
> Aplique a idéia de usar UNION ALL. Isso funciona em qualquer servidor SQL e
> nunca vi piorar o desempenho da consulta. O que faço é o seguinte: para
> CADA
> LEF OUTER JOIN da sua consulta, substitua por duas cópias da mesma query
> separadas por UNION ALL (não union, tem de ser UNION ALL),
Sim amigo por exemplo a query que estava tentando melhorar demorava
uns 25segundos com left join passando a usar a técnica do Mozart ela
passou a executar em no max 3segundos.
Abaixo segue a query modificada.
SELECT
codigofab,
descricao,
prazo,
quantidade,
ERE NOT EXISTS (SELECT 1 FROM b WHERE a.id= b.id)
>
> UNION all
>
> -- com B com C
> SELECT "campoA", "campoB", "campoC" as c FROM a
> INNER JOIN b ON (a.id= b.id)
> INNER JOIN c ON (a.id= c.id)
>
>
> Mozart
>
> -- Original Message
ON (a.id= c.id)
WHERE NOT EXISTS (SELECT 1 FROM b WHERE a.id= b.id)
UNION all
-- com B com C
SELECT "campoA", "campoB", "campoC" as c FROM a
INNER JOIN b ON (a.id= b.id)
INNER JOIN c ON (a.id= c.id)
Mozart
-- Original Message --
> From: mateusgra
> S
null as b, campoC FROM a WHERE NOT EXISTS (SELECT 1 FROM a
> WHERE a.id= c.id)
>
> Ocorreu duas linhas por regitros quando tem registro so em A e C ou A e
> B.
>
>
> Mozart Hasse wrote:
>>
>> Olá Vinicius,
>>
>>> From: vinicius perroni
>>
)
UNION ALL
SELECT campoA, null as b, campoC FROM a WHERE NOT EXISTS (SELECT 1 FROM a
WHERE a.id= c.id)
Ocorreu duas linhas por regitros quando tem registro so em A e C ou A e B.
Mozart Hasse wrote:
>
> Olá Vinicius,
>
>> From: vinicius perroni
>> Subject: [pgbr-geral] Otimi
Obrigado pelas dicas tanto a do Marcos que faz pensar que quando
iniciar um projeto novo já planejar essas functions e a solução do
Mozart que implementei e deu certo a query demorava 25segundos caiu
para 2 3 segundos.
vlw...
Att
Vinicius Perroni
___
pgb
Olá Vinicius,
> From: vinicius perroni
> Subject: [pgbr-geral] Otimizar consulta com LEFT JOIN
> Estou com um velho problema uma consulta minha utiliza muitos LEFT
> JOINS tornandoa lenta demais.
> A consulta é mais ou menos assim tenho uma tabela de orçamentos, uma
> de o
Obrigado é um boa alternativa esta sua. (Só não sei se meu chefe vai
deixar eu sair criando funções na base de dados hehehe mas isso é
outro problema)
Obrigado pela ajuda.
Em 17 de maio de 2010 11:27, Marcos - GMail escreveu:
> Tu pode fazer o seguinte: Se eu entendi bem, tu precisa de informaçõ
Tu pode fazer o seguinte: Se eu entendi bem, tu precisa de informações de
diversas tabelas e o uso do left join. Vou te dar um exemplo pratico do que
eu faço:
Eu tenho uma tabela
Orcamento(Mestre)
OrcamentoItem(Detalhe)
Nas tabelas acima eu uso o left join, entao:
Select *
>From "Orcamento" left
Bom dia a todos.
Estou com um velho problema uma consulta minha utiliza muitos LEFT
JOINS tornandoa lenta demais.
A consulta é mais ou menos assim tenho uma tabela de orçamentos, uma
de ordens de compras e outra de Notas Fiscas, três tabelas sendo o
unico registro que certamente existe é o orçame
2008/5/14 ..:: Rodrigo (-_-) Machado ::.. <[EMAIL PROTECTED]>:
>
> eu encontrei em uma mensagem da lista um colega indicando para colocar o
> nome da tabela em um select tabela.campo from xxx para otimizar a consulta,
Leia a seqüência da discussão, verás que é altamente improvável.
Mas é bom para
Boa noite colegas,
eu encontrei em uma mensagem da lista um colega indicando para colocar o
nome da tabela em um select tabela.campo from xxx para otimizar a consulta,
Gostaria da confirmação dos colegas,
em uma consulta onde envolve varias tabelas, fica mais rapido colocar o nome
da tabela na f
>
> Voce poderia rodar EXPLAIN ANALYZE de ambas e colar aqui para nós por
> favor?
EXPLAIN ANALYZE
select c_cpd, sum(n_cant) from (
select c_cpd, sum(n_cant) as n_cant from movie
where c_sucursal>='001' and c_sucursal<='001'
group by c_cpd
union all
select c_cpd, sum(n
..:: Rodrigo (-_-) Machado ::.. escreveu:
> Veja o explain: 14677.89 contra 6785.
Rodrigo,
Voce poderia rodar EXPLAIN ANALYZE de ambas e colar aqui para nós por favor?
--
[]s
Dickson S. Guedes
-
Projeto Colmeia - Curitiba - PR
(41) 3254-7130 ramal: 27
http://
Evandro Ricardo Silvestre escreveu:
> ..:: Rodrigo (-_-) Machado ::.. wrote:
>> Bom dia pessoal, nao sei se posso postar este tipo de topico na lista,
>> mas ca estou eu.
>> Sou bem iniciando no mundo SQL, e preciso otimizar esta consulta.
>>
>> select c_cpd, sum(n_cant) from (
>
> Não sei se entendi direito, mas ai vai uma dica:
>
> select movie.c_cpd, sum(movie.n_cant + (movis.n_cant)*-1) as n_cant
> from movie
>JOIN movis ON (movis.c_cpd = movie.c_cpd)
> where movie.c_sucursal>='001' and movie.c_sucursal<='001'
> group by movie.c_cpd
>
> Ape
..:: Rodrigo (-_-) Machado ::.. wrote:
> Bom dia pessoal, nao sei se posso postar este tipo de topico na lista,
> mas ca estou eu.
> Sou bem iniciando no mundo SQL, e preciso otimizar esta consulta.
>
> select c_cpd, sum(n_cant) from (
> select c_cpd, sum(n_cant) as n_cant
Obrigado Luiz,
na verdade, preciso where c_sucursal>='001' and where c_sucursal<='001'
pois esses valores sao passados por parametros, e alguns casos podem ser
alterados.
Entao, vou criar o indice.
Obrigado pela dica.
--
*:-.,_,.-:*'``'*:-.,_,.-:*:-.,_,.-:*'``'*:-.,_,.-:
:: Rodrigo Machad
group by c_cpd
) as movi
group by c_cpd
order by c_cpd
e tenha um indice pelo campo c_sucursal
[]s
Luiz
- Original Message -
From: ..:: Rodrigo (-_-) Machado ::..
To: Comunidade PostgreSQL Brasileira
Sent: Thursday, April 10, 2008 11:47 AM
Subject: [pgbr-geral] Otimizar Consulta
Bom
Bom dia pessoal, nao sei se posso postar este tipo de topico na lista, mas
ca estou eu.
Sou bem iniciando no mundo SQL, e preciso otimizar esta consulta.
select c_cpd, sum(n_cant) from (
select c_cpd, sum(n_cant) as n_cant from movie
where c_sucursal>='001' and c_sucursal<='001'
33 matches
Mail list logo