Olá pessoal,

Criei uma VIEW com três SELECTS usando o UNION.

Quando executo um select na view, está demorando 5 segundos para retornar o
resultado. Porém, executando os selects por separado, cada um demora 15ms
em média.

Detalhe: uma das tabelas contém 2,6 milhões de registros e possui os
devidos índices criados.
A instalação do postgres 9.1 é a padrão. Alguém poderia me dar alguma dica
para melhorar esse desempenho?

Outro detalhe importante:

Ao chamar a consulta da view, quando comparo com um valor "colocado na mão"
o retorno é instantâneo, porém quando comparo com um campo da tabela, daí
demora. Vejam o código chamador:

select com_oferta.nr_oferta
from com_oferta

 left join com_trafego on com_trafego.cd_oferta = com_oferta.cd_oferta
 left join pro_produto on com_oferta.cd_produto = pro_produto.cd_produto
 left join vw_loc_origem_destino2 on vw_loc_origem_destino2.cd_codigo =
com_trafego.cd_origem_carga --> Este é o comando problemático.
--> Se eu comparar com um valor explícito, funciona rápido (= 3 por
exemplo).

where
     com_oferta.cd_produto = 1





Segue código da view:

CREATE OR REPLACE VIEW bs_dvm.vw_loc_origem_destino2 AS

        ( SELECT loc_cidade.cd_cidade AS cd_codigo,
                           loc_cidade.nm_cidade::text as nm_nome,
                           loc_cidade.cd_pais, loc_cidade.cd_regiao, 3 AS
tp_tipo
                FROM bs_dvm.loc_cidade
                LEFT JOIN bs_dvm.loc_regiao ON loc_cidade.cd_regiao =
loc_regiao.cd_regiao
                LEFT JOIN bs_dvm.loc_pais ON loc_cidade.cd_pais =
loc_pais.cd_pais

        UNION

                SELECT loc_porto.cd_porto AS cd_codigo,
                           loc_porto.nm_porto::text AS nm_nome,
                           loc_porto.cd_pais, 0 AS cd_regiao, 2 AS tp_tipo
                FROM bs_dvm.loc_porto
        );

ALTER TABLE bs_dvm.vw_loc_origem_destino
  OWNER TO postgres;
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a