Tá certo. Não passei por achar que era muita informação. Vamos lá:

1) a Tabela compras (a exemplo)

CREATE TABLE public.compras (
  id BIGINT NOT NULL, 
  id_empresa INTEGER NOT NULL, 
  id_terceiro INTEGER NOT NULL, 
  num_ped_compra_interno INTEGER NOT NULL, 
  num_ped_compra INTEGER, 
  numero_nf INTEGER, 
  modelo_nf CHAR(2), 
  serie_nf CHAR(3), 
  forma_pagto VARCHAR(200), 
  data_autorizacao TIMESTAMP WITHOUT TIME ZONE, 
  id_autorizador INTEGER, 
  data_ped_compra TIMESTAMP WITHOUT TIME ZONE, 
  id_comprador INTEGER, 
  data_emissao TIMESTAMP WITHOUT TIME ZONE, 
  data_receber TIMESTAMP WITHOUT TIME ZONE, 
  data_saida TIMESTAMP WITHOUT TIME ZONE, 
  vendedor VARCHAR(100), 
  data_recebido TIMESTAMP WITHOUT TIME ZONE, 
  data_conf_entrada TIMESTAMP WITHOUT TIME ZONE, 
  id_func_conferiu INTEGER, 
  observ_conferente VARCHAR(1000), 
  data_lancto TIMESTAMP WITHOUT TIME ZONE, 
  valor_produtos NUMERIC(18,2) NOT NULL, 
  valor_total_frete NUMERIC(18,2) NOT NULL, 
  valor_total_seguro NUMERIC(18,2) NOT NULL, 
  valor_total_outros NUMERIC(18,2) NOT NULL, 
  valor_desconto NUMERIC(18,2) NOT NULL, 
  valor_icms NUMERIC(18,2) NOT NULL, 
  valor_ipi NUMERIC(18,2) NOT NULL, 
  valor_st NUMERIC(18,2) NOT NULL, 
  valor_total NUMERIC(18,2) NOT NULL, 
  valor_pis NUMERIC(18,2) NOT NULL, 
  valor_cofins NUMERIC(18,2) NOT NULL, 
  valor_bc_icms NUMERIC(18,2) NOT NULL, 
  valor_bc_st NUMERIC(18,2) NOT NULL, 
  resp_frete CHAR(1) NOT NULL, 
  id_transportadora INTEGER, 
  peso_liquido NUMERIC(12,3) NOT NULL, 
  peso_bruto NUMERIC(12,3) NOT NULL, 
  volumes VARCHAR(20), 
  observacoes VARCHAR(1000), 
  status CHAR(1) NOT NULL, 
  placa VARCHAR(8), 
  motorista VARCHAR(30), 
  uf_placa CHAR(2), 
  valor_icms_recuperar NUMERIC(18,2) NOT NULL, 
  valor_ipi_recuperar NUMERIC(18,2) NOT NULL, 
  valor_pis_recuperar NUMERIC(18,2) NOT NULL, 
  valor_cofins_recuperar NUMERIC(18,2) NOT NULL, 
  fora_estado BOOLEAN NOT NULL, 
  id_romaneio_devolucao BIGINT, 
  id_venda_devolucao BIGINT, 
  observacoes_nf TEXT, 
  id_func_fechamento INTEGER, 
  data_fechamento TIMESTAMP WITHOUT TIME ZONE, 
  id_func_status_pedido INTEGER, 
  data_status_pedido TIMESTAMP WITHOUT TIME ZONE, 
  valor_creditos_baixados NUMERIC(18,2) NOT NULL, 
  valor_dev_a_vista NUMERIC(18,2) NOT NULL, 
  tem_nf BOOLEAN DEFAULT false NOT NULL, 
  id_nat_operacao INTEGER NOT NULL, 
  frete_a_parte BOOLEAN DEFAULT false NOT NULL, 
  seguro_a_parte BOOLEAN DEFAULT false NOT NULL, 
  despesas_a_parte BOOLEAN DEFAULT false NOT NULL, 
  tipo_convenio BOOLEAN NOT NULL, 
  especie_nf CHAR(2), 
  ct_id_compra_vinculada BIGINT, 
  valor_cofins_rec_frete NUMERIC(18,2) NOT NULL, 
  valor_pis_rec_frete NUMERIC(18,2) NOT NULL, 
  valor_icms_rec_frete NUMERIC(18,2) NOT NULL, 
  historico VARCHAR(150), 
  id_contrato BIGINT, 
  id_motivo_devolucao INTEGER, 
  valor_subst_trib_recuperar NUMERIC(18,2) NOT NULL, 
  valor_total_digitado NUMERIC(18,2), 
  valor_total_frete_digitado NUMERIC(18,2), 
  valor_total_seguro_digitado NUMERIC(18,2), 
  valor_total_outros_digitado NUMERIC(18,2), 
  forma_rateio_itens CHAR(1), 
  valor_ipi_extra NUMERIC(18,2) NOT NULL, 
  valor_iss NUMERIC(18,2) NOT NULL, 
  iss_retido BOOLEAN NOT NULL, 
  rntrc VARCHAR(20), 
  placa_reboque1 VARCHAR(8), 
  uf_placa_reboque1 CHAR(2), 
  rntrc_reboque1 VARCHAR(20), 
  placa_reboque2 VARCHAR(8), 
  uf_placa_reboque2 CHAR(2), 
  rntrc_reboque2 VARCHAR(20), 
  placa_reboque3 VARCHAR(8), 
  uf_placa_reboque3 CHAR(2), 
  rntrc_reboque3 VARCHAR(20), 
  id_veiculo INTEGER, 
  danfe VARCHAR(60), 
  valor_total_scp NUMERIC(18,2) NOT NULL, 
  valor_total_scp_baixado NUMERIC(18,2) NOT NULL, 
  texto_pendencias TEXT, 
  compra_liberada BOOLEAN NOT NULL, 
  valor_parcelado NUMERIC(18,2) NOT NULL, 
  valor_dev_a_prazo NUMERIC(18,2) NOT NULL, 
  valor_dev_abatimento NUMERIC(18,2) NOT NULL, 
  data_indexador DATE, 
  orcado_com_imposto BOOLEAN NOT NULL, 
  valor_bc_pis NUMERIC(18,2) NOT NULL, 
  valor_bc_cofins NUMERIC(18,2) NOT NULL, 
  ct_tipo_frete_contratado CHAR(1), 
  nfe_validada BOOLEAN NOT NULL, 
  nfe_msg_consulta VARCHAR(200), 
  xml_nfe TEXT, 
  CONSTRAINT compras_pkey PRIMARY KEY(id), 
  CONSTRAINT compras_fk1 FOREIGN KEY (id_empresa)
    REFERENCES public.empresas(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk10 FOREIGN KEY (id_romaneio_devolucao)
    REFERENCES public.romaneios(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk11 FOREIGN KEY (id_contrato)
    REFERENCES public.contratos_compra(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk12 FOREIGN KEY (id_func_fechamento)
    REFERENCES public.terceiros(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk13 FOREIGN KEY (id_nat_operacao)
    REFERENCES public.naturezas_operacoes(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk14 FOREIGN KEY (id_motivo_devolucao)
    REFERENCES public.motivos_devolucao(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk15 FOREIGN KEY (id_veiculo)
    REFERENCES public.veiculos_transporte(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk2 FOREIGN KEY (id_terceiro)
    REFERENCES public.terceiros(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk3 FOREIGN KEY (ct_id_compra_vinculada)
    REFERENCES public.compras(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk4 FOREIGN KEY (id_autorizador)
    REFERENCES public.terceiros(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk5 FOREIGN KEY (id_comprador)
    REFERENCES public.terceiros(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk6 FOREIGN KEY (id_func_conferiu)
    REFERENCES public.terceiros(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk7 FOREIGN KEY (id_transportadora)
    REFERENCES public.terceiros(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk8 FOREIGN KEY (id_func_status_pedido)
    REFERENCES public.terceiros(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT compras_fk9 FOREIGN KEY (id_venda_devolucao)
    REFERENCES public.vendas(id)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    NOT DEFERRABLE
) WITHOUT OIDS;

CREATE INDEX compras_idx1 ON public.compras

  USING btree (id_empresa, data_ped_compra);

CREATE INDEX compras_idx10 ON public.compras
  USING btree (ct_id_compra_vinculada);

CREATE INDEX compras_idx12 ON public.compras
  USING btree (id_contrato);

CREATE INDEX compras_idx13 ON public.compras
  USING btree (id_empresa, data_recebido);

CREATE INDEX compras_idx14 ON public.compras
  USING btree (id_empresa, numero_nf);

CREATE INDEX compras_idx2 ON public.compras
  USING btree (id_empresa, id_terceiro);

CREATE UNIQUE INDEX compras_idx3 ON public.compras
  USING btree (id_empresa, num_ped_compra_interno);

CREATE INDEX compras_idx4 ON public.compras
  USING btree (id_empresa, data_emissao);

CREATE INDEX compras_idx5 ON public.compras
  USING btree (id_empresa, data_recebido DESC);

CREATE INDEX compras_idx6 ON public.compras
  USING btree (id_empresa, data_receber);

CREATE INDEX compras_idx7 ON public.compras
  USING btree (id_empresa, data_lancto);

CREATE INDEX compras_idx8 ON public.compras
  USING btree (id_venda_devolucao);

CREATE INDEX compras_idx9 ON public.compras
  USING btree (id_romaneio_devolucao);

2) a View
CREATE VIEW public.view_fila_nfe (
    id,
    ...
    tipo_emissao)

AS
SELECT nfe.id, nfe.id_fila, f.desc_fila, nfe.id_compra, nfe.id_venda,
    sp_formata_danfe(nfe.danfe) AS danfe, nfe.recibo, nfe.protocolo, 
nfe.xml_nao_assinado, nfe.xml_assinado, nfe.dh_fila, nfe.dh_envio, 
nfe.dh_retorno, nfe.dh_cancelamento, nfe.dh_impressao, nfe.numero_chave, 
nfe.dv_chave, nfe.status_envio, nfe.status_retorno, nfe.email, 
nfe.dh_envio_email, nfe.nao_enviar_email, nfe.erro_email, nfe.numero_nf, 
nfe.id_empresa, nfe.serie_nf,
        CASE nfe.id_compra IS NOT NULL
            WHEN true THEN c.num_ped_compra_interno
            ELSE v.numero_doc
        END AS numero_doc, nfe.id_terceiro, t1.razao_social, t1.nome AS
            nome_fantasia, nop1.desc_natureza,
        CASE nfe.id_compra IS NOT NULL
            WHEN true THEN c.valor_total
            ELSE v.valor_total
        END AS valor_total, nfe.data_emissao,
        CASE nfe.id_compra IS NOT NULL
            WHEN true THEN 'Entrada'::text
            ELSE 'Saída'::text
        END AS desc_ent_saida,
        CASE nfe.status_retorno
            WHEN '0'::bpchar THEN 'Não consultada'::text
            WHEN '1'::bpchar THEN 'OK'::text
            WHEN '2'::bpchar THEN 'Rejeitada'::text
            WHEN '3'::bpchar THEN 'Denegada'::text
            WHEN '4'::bpchar THEN 'Erro'::text
            ELSE NULL::text
        END AS desc_status_retorno, nfe.mensagem_status, nfe.codigo_retorno,
            t2.razao_social AS nome_func_emissao, t3.razao_social AS 
nome_func_cancelamento, v.id_romaneio AS venda_id_romaneio, 
c.id_romaneio_devolucao AS compra_id_romaneio, r1.numero_doc AS 
venda_num_doc_romaneio, r2.numero_doc AS compra_num_doc_romaneio, 
COALESCE(v.venda_posterior, false) AS venda_posterior, r1.data_acerto AS 
venda_data_acerto_rom, r2.data_acerto AS compra_data_acerto_rom, 
nfe.protocolo_cancelamento, nfe.dh_envio_email_canc, nfe.nao_enviar_email_canc,
        CASE nfe.dh_cancelamento IS NOT NULL AND (nfe.dh_envio_email IS NOT
            NULL OR nfe.nao_enviar_email)
            WHEN true THEN 'Cancelamento'::text
            ELSE 'Emissão'::text
        END AS tipo_email, nfe.id_contingencia, ctg.tipo_contingencia,
        CASE COALESCE(ctg.tipo_contingencia, ''::bpchar)
            WHEN '1'::bpchar THEN 'FS'::text
            WHEN '2'::bpchar THEN 'SCAN'::text
            ELSE 'Normal'::text
        END AS tipo_emissao
FROM nfe
   LEFT JOIN compras c ON c.id = nfe.id_compra
   LEFT JOIN vendas v ON v.id = nfe.id_venda
   LEFT JOIN terceiros t1 ON nfe.id_terceiro = t1.id
   LEFT JOIN naturezas_operacoes nop1 ON nfe.id_nat_operacao = nop1.id
   JOIN nfe_filas f ON f.id = nfe.id_fila
   LEFT JOIN terceiros t2 ON t2.id = nfe.id_func_emissao
   LEFT JOIN terceiros t3 ON t3.id = nfe.id_func_cancelamento
   LEFT JOIN romaneios r1 ON r1.id = v.id_romaneio
   LEFT JOIN romaneios r2 ON r2.id = c.id_romaneio_devolucao
   LEFT JOIN nfe_contingencia ctg ON ctg.id = nfe.id_contingencia;

3) a consulta

explain
select * from view_fila_nfe where (id_empresa = 1) and
(id_fila = 1) and (status_retorno = '1') and 
(coalesce(email, '') <> '') AND (((dh_cancelamento IS NULL) AND (dh_envio_email 
IS NULL) 
AND (nao_enviar_email = false))  or ((dh_cancelamento IS NOT NULL) 
AND (dh_envio_email_canc IS NULL) AND (nao_enviar_email_canc = false))) order 
by numero_nf, id


>________________________________
> De: Flavio Henrique Araque Gurgel <[email protected]>
>Para: Comunidade Postgresql <[email protected]> 
>Enviadas: Quarta-feira, 12 de Setembro de 2012 13:12
>Assunto: Re: [pgbr-geral] Interpretar explain
> 
>
>Em 12/09/2012 às 12:09 horas, [email protected] 
>escreveu:
>Pessoal, estou tendo o explain abaixo para uma view. O que não entendo é por 
>que o pg não está usando a chave primeira para fazer um join com a tabela de 
>compras (Seq Scan on compras c  (cost=0.00..5125.69 rows=79569 width=26)). 
>Alguém pode me orientar?
>> 
>Certamente poderemos se você nos enviar:
>1) a consulta
>2) a estrutura das tabelas envolvidas (pelo menos a que você está com a dúvida)
> 
>[]s
> 
>__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748 www.4linux.com.br email: 
[email protected]
______________________________
FREE SOFTWARE SOLUTIONS 
> 
> 
>_______________________________________________
>pgbr-geral mailing list
>[email protected]
>https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a