Em 18 de janeiro de 2013 09:51, Matheus de Oliveira < [email protected]> escreveu:
> Por favor, tente manter a resposta anterior e adicionar sua resposta > abaixo da minha, ok? > > 2013/1/17 Flavio Yamil Gómez <[email protected]> > >> Obrigado Matheus. >> Eu já tinha testado com UNION ALL. Toma o mesmo tempo. >> >> > Tem como postar o EXPLAIN ANALYZE com o UNION ALL. Além disso, é possível > passar a estrutura da tabela loc_cidade com os índices/chaves que ela > possui? > Já que ele usa ordenação em disco, tem algum parâmetro de configuração que >> possa alterar pra melhorar o desempenho? >> >> sds >> > > Sim. Basta aumentar o valor do work_mem, para o seu caso creio que 100MB > daria: > > SET work_mem TO '100MB'; > > Mas o ideal é tentar otimizar a query para evitar essa ordenação tão cara. > Talvez criando um índice seja suficiente, ou talvez seja possível evitar o > merge join. Envie o que pedi acima que podemos analisar a melhor solução. > > > Atenciosamente, > -- > Matheus de Oliveira > Analista de Banco de Dados > Dextra Sistemas - MPS.Br nível F! > www.dextra.com.br/postgres > > Olá Matheus, Configurei o work_mem para 100MB mas continua na mesma. Segue o EXPLAIN ANALYZE com UNION ALL: http://explain.depesz.com/s/seyG Segue estrutura da tabela loc_cidade com índices: CREATE TABLE loc_cidade ( cd_cidade serial NOT NULL, cd_pais integer NOT NULL, cd_regiao integer, nm_cidade character varying(150) NOT NULL, nm_cidade_minuscula character varying(150), sg_regiao character(2), nr_populacao bigint, nr_latitude double precision, nr_longitude double precision, id_ativo_inativo boolean, CONSTRAINT pk_cidade PRIMARY KEY (cd_cidade ), CONSTRAINT fk_cidade_pais FOREIGN KEY (cd_pais) REFERENCES loc_pais (cd_pais) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT fk_cidade_regiao FOREIGN KEY (cd_regiao) REFERENCES loc_regiao (cd_regiao) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ) WITH ( OIDS=FALSE ); ALTER TABLE loc_cidade OWNER TO postgres; GRANT ALL ON TABLE loc_cidade TO postgres; GRANT ALL ON TABLE loc_cidade TO mv_group; GRANT ALL ON TABLE loc_cidade TO metalog_admin WITH GRANT OPTION; COMMENT ON TABLE loc_cidade IS 'Armazena as cidades'; -- Index: "ix_tab_cidade_PAIS" -- DROP INDEX "ix_tab_cidade_PAIS"; CREATE INDEX "ix_tab_cidade_PAIS" ON loc_cidade USING btree (cd_pais ); -- Index: "ix_tab_cidade_Pais_Regiao" -- DROP INDEX "ix_tab_cidade_Pais_Regiao"; CREATE INDEX "ix_tab_cidade_Pais_Regiao" ON loc_cidade USING btree (cd_pais , cd_regiao ); -- Index: ix_tab_cidade_nome -- DROP INDEX ix_tab_cidade_nome; CREATE INDEX ix_tab_cidade_nome ON loc_cidade USING btree (nm_cidade ); -- Index: ix_tab_cidade_regiao -- DROP INDEX ix_tab_cidade_regiao; CREATE INDEX ix_tab_cidade_regiao ON loc_cidade USING btree (cd_regiao ); obrigado Flavio Yamil
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
