Já executou o Explain para ver qual o gargalo? poderia reproduzir a estrutura de modo simplificado? somente informando a estrutura do "select" não diz muita coisa para te ajudar já que não sebemos a estrutura das tabelas.
Em 15 de janeiro de 2013 09:37, Flavio Yamil Gómez < [email protected]> escreveu: > 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 > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Anselmo M. Silva
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
