> Cara, cuidado!
>
> "Seq scan" não é sinônimo de lentidão. Como o Tiago disse, caso a tabela
> produtos não seja muito grande (e.g. algumas páginas) é natural que o
> PostgreSQL escolha um "seq scan" ao invés de um "index scan", já que o
> "index scan" poderia acarretar mais leituras em disco que um simples "seq
> scan".
>

Certo. O que quis dizer é que o select está literamente passando todos os
registros da tabela de produto. Eu comprovei isto assim:

SELECT chave, produto, funcao_teste( chave ) FROM visao WHERE produto IN (
SELECT codigo FROM produtos_contados )

Dentro da funcao_teste eu dou um RAISE NOTICE, com o código do produto,
passado por parâmetro na função.
Eu pude verificar que o select dessa maneira, com IN, está passando em
todos os produtos cadastrados.

Se eu fizer sem o IN, passando os valores literais, apenas os registros
corretos são lidos, também pude comprovar isto com a saída da funcao_teste.

O que me intriga, é que atualizamos a versão do kernel rescentemente, da
2.6 para 3.2, e ao mesmo tempo atualizamos o PostgreSQl do 8.4.8 para
8.4.12.

Teoricamente, a atualização não tem nada a ver. Certo?
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a