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

Responder a