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