José Carlos Messias escreveu:
> Euler coloquei as consultas em http://www.cpt.com.br/zehk/sql.txt.
> 
Tenho algumas perguntas sobre o seu ambiente. Qual é o número de
registros de cada tabela envolvida? Quais os parâmetros diferentes do
padrão no seu postgresql.conf (estaria interessado nos parâmetros da
seção Query Tuning)? Você alterou o 'statistics target' (aka SET
STATISTICS) de alguma tabela? Se sim, quais os novos valores?

Pelo que pude ver do EXPLAIN ANALYZE, acho que você podia tentar
reescrever essa consulta sem a subconsulta. Algo como:

SELECT
        FP.NomeFPag AS FPag,
        SUM(R.ValorParcela) AS Valor
                
FROM televenda_pedidos.Pedido P
INNER JOIN televenda_pedidos.Receber R ON P.CodPedido = R.CodPedido
INNER JOIN televenda_pedidos.FPagamento FP ON P.CodFPag = FP.CodFPag
INNER JOIN televenda_pedidos.DetPedido D ON P.CodPedido = D.CodPedido
INNER JOIN televenda_produtos.vProdutos Pr ON D.CodProd = Pr.CodProd
-- XXX não sei se é necessário para sua consulta
INNER JOIN televenda_pedidos.Receber R ON P.CodPedido = R.CodPedido
                
WHERE
        Pr.empresa = 4
        --AND R.ValorPago IS NOT NULL
        AND (R.DataPag IS NOT NULL)
        AND COALESCE(R.DataPagExtra, R.DataPag) BETWEEN '2008/08/25' AND
'2008/08/25 23:59:59'
        AND P.status = 4
                
GROUP BY FP.NomeFPag

Dica: utilize valores diferentes do work_mem e não esqueça de analisar
as tabelas antes dos testes.


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a