Segue link: https://explain.depesz.com/s/EY6v
Em 21/09/2016 17:14, Lucas Possamai escreveu:
2016-09-22 8:00 GMT+12:00 Antonio Cesar <[email protected] <mailto:[email protected]>>:Segue SELECT tmp.codigo_empresa, tmp.codigo_anterior, tmp.tipo, SUM(tmp.mes01) AS quantidade_mes01, SUM(tmp.mes02) AS quantidade_mes02, SUM(tmp.mes03) AS quantidade_mes03, SUM(tmp.mes04) AS quantidade_mes04, SUM(tmp.mes05) AS quantidade_mes05, SUM(tmp.mes06) AS quantidade_mes06, SUM(tmp.mes07) AS quantidade_mes07, SUM(tmp.mes08) AS quantidade_mes08, SUM(tmp.mes09) AS quantidade_mes09, SUM(tmp.mes10) AS quantidade_mes10, SUM(tmp.mes11) AS quantidade_mes11, SUM(tmp.mes12) AS quantidade_mes12 FROM (SELECT its.codigo_empresa, ite.codigo_anterior, CAST('Saídas' AS CHAR(15)) AS tipo, SUM(CASE WHEN its.mes_ref = '102015' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes01, SUM(CASE WHEN its.mes_ref = '112015' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes02, SUM(CASE WHEN its.mes_ref = '122015' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes03, SUM(CASE WHEN its.mes_ref = '012016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes04, SUM(CASE WHEN its.mes_ref = '022016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes05, SUM(CASE WHEN its.mes_ref = '032016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes06, SUM(CASE WHEN its.mes_ref = '042016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes07, SUM(CASE WHEN its.mes_ref = '052016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes08, SUM(CASE WHEN its.mes_ref = '062016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes09, SUM(CASE WHEN its.mes_ref = '072016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes10, SUM(CASE WHEN its.mes_ref = '082016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes11, SUM(CASE WHEN its.mes_ref = '092016' THEN (its.quantidade_saida / un.quantidade) ELSE 0 END) AS mes12 FROM ((item_mensal its INNER JOIN item ite ON its.codigo_item = ite.codigo) INNER JOIN unidade un ON ite.codigo_unidade = un.codigo) WHERE its.ano_ref >= '2015-10-01' AND its.ano_ref <= '2016-09-30' AND its.codigo_item = 10016528 GROUP BY "tipo", its.codigo_empresa, ite.codigo_anterior UNION ALL SELECT its.codigo_empresa, ite.codigo_anterior, CAST('Entradas' AS CHAR(15)) AS tipo, SUM(CASE WHEN its.mes_ref = '102015' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes01, SUM(CASE WHEN its.mes_ref = '112015' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes02, SUM(CASE WHEN its.mes_ref = '122015' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes03, SUM(CASE WHEN its.mes_ref = '012016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes04, SUM(CASE WHEN its.mes_ref = '022016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes05, SUM(CASE WHEN its.mes_ref = '032016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes06, SUM(CASE WHEN its.mes_ref = '042016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes07, SUM(CASE WHEN its.mes_ref = '052016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes08, SUM(CASE WHEN its.mes_ref = '062016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes09, SUM(CASE WHEN its.mes_ref = '072016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes10, SUM(CASE WHEN its.mes_ref = '082016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes11, SUM(CASE WHEN its.mes_ref = '092016' THEN (its.quantidade_entrada / un.quantidade) ELSE 0 END) AS mes12 FROM ((item_mensal its INNER JOIN item ite ON its.codigo_item = ite.codigo) INNER JOIN unidade un ON ite.codigo_unidade = un.codigo) WHERE its.ano_ref >= '2015-10-01' AND its.ano_ref <= '2016-09-30' AND its.codigo_item = 10016528 GROUP BY "tipo", its.codigo_empresa, ite.codigo_anterior) tmp GROUP BY tmp.tipo, tmp.codigo_empresa, tmp.codigo_anterior ORDER BY tmp.tipo, tmp.codigo_empresa Em 21/09/2016 16:57, Euler Taveira escreveu: On 21-09-2016 16:32, Antonio Cesar wrote: Estou montado esse select e esta muito lento, alguem pode me ajudar? EXPLAIN ANALYZE. Cadê a consulta?Execute sua query com Explain analyze... https://www.postgresql.org/docs/current/static/sql-explain.htmlexplain analyze SELECT * FROM test;Poste o resultado aqui (Melhor de visualizar): http://explain.depesz.com/ e nos mande o link Lucas
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
<<attachment: cgcesarsoares.vcf>>
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
