O curioso eh que a juncao do join esta sendo feito por dois campos com pk, em um ele usa o indice da pk e no outro nao.E mesmo para os outros campos do where tambem tem indices .
Em 17 de março de 2010 17:04, JotaComm <jota.c...@gmail.com> escreveu: > Opa, > > Em 17 de março de 2010 17:01, Tiago Valério <tiagosvale...@gmail.com>escreveu: > > Ja tinha feito isto antes de dar o explain porem na duvida fiz novamente >> e a saida foi a mesma >> >> "Limit (cost=0.00..22827.32 rows=10000 width=39)" >> " -> Nested Loop (cost=0.00..760910.00 rows=333333 width=39)" >> " Join Filter: (a.datahora_processamento > >> b.datahora_processamento)" >> " -> Seq Scan on cnpj_rf b (cost=0.00..24554.00 rows=1000000 >> width=23)" >> " -> Index Scan using cnpjkey on ecnpj_teste_repro a >> (cost=0.00..0.72 rows=1 width=39)" >> " Index Cond: (a.cnpj = (b.cnpj)::bpchar)" >> " Filter: ((a.flag_processamento = 22) AND (a.flag_relacional >> = 0))" >> >> Olhando rapidamente, o problema me parece na leitura sequencial que esta > acontecendo na tabela cnpj_rf, acredito que um índice nesta tabela deve > resolver o problema. > >> >> Em 17 de março de 2010 16:55, JotaComm <jota.c...@gmail.com> escreveu: >> >> Olá, >>> >>> >>> Em 17 de março de 2010 16:51, Tiago Valério >>> <tiagosvale...@gmail.com>escreveu: >>> >>> Pessoal estou executando a seguinte consulta(segue abaixo) com o >>>> resultado de explain(segue abaixo) a tabela possui a mesma quantidade de >>>> registros 1.000.000, ambas possuem indices para os campos de juncao e >>>> campos >>>> da condicao. >>>> >>>> Porem o valor de Nested Loop esta alto.Teria algo que possa ser feito >>>> para melhorar isto? >>>> >>> >>> Quando foi a última vez que rodou o ANALYZE? >>> >>>> >>>> >>>> >>>> "Limit (cost=0.00..22827.32 rows=10000 width=39)" >>>> " -> Nested Loop (cost=0.00..760910.00 rows=333333 width=39)" >>>> " Join Filter: (a.datahora_processamento > >>>> b.datahora_processamento)" >>>> " -> Seq Scan on cnpj_rf b (cost=0.00..24554.00 rows=1000000 >>>> width=23)" >>>> " -> Index Scan using cnpjkey on ecnpj_teste_repro a >>>> (cost=0.00..0.72 rows=1 width=39)" >>>> " Index Cond: (a.cnpj = (b.cnpj)::bpchar)" >>>> " Filter: ((a.flag_processamento = 22) AND >>>> (a.flag_relacional = 0))" >>>> >>>> select >>>> a.cnpj as cnpj_atual, >>>> cdmatriz_changed , >>>> data_abertura_changed, >>>> razao_social_changed , >>>> fantasia_changed, >>>> cdnatureza_changed, >>>> logradouro_changed, >>>> numero_changed, >>>> complemento_changed, >>>> cep_changed, >>>> bairro_changed, >>>> municipio_changed, >>>> uf_changed, >>>> cdsitcadastral_changed, >>>> cdmotivosituacao_changed, >>>> cdsitcadastralesp_changed, >>>> cnaes_changed, >>>> a.datahora_processamento as data_atual >>>> >>>> >>>> from ecnpj_teste_repro a left join cnpj_rf b >>>> on a.cnpj=b.cnpj >>>> >>>> >>>> where a.flag_processamento=22 and a.flag_relacional=0 and >>>> a.datahora_processamento > b.datahora_processamento >>>> >>>> LIMIT 10000 >>>> >>>> _______________________________________________ >>>> pgbr-geral mailing list >>>> pgbr-geral@listas.postgresql.org.br >>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>>> >>>> >>> >>> []s >>> -- >>> JotaComm >>> http://jotacomm.wordpress.com >>> >>> _______________________________________________ >>> pgbr-geral mailing list >>> pgbr-geral@listas.postgresql.org.br >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >>> >> >> _______________________________________________ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> >> > > []s > -- > JotaComm > http://jotacomm.wordpress.com > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral