> até aqui legal. Porém quando faço:
>
> SELECT chave, produto FROM visao WHERE produto IN ( SELECT codigo FROM
> produtos_contados ),
>
> o plano de execução muda radicalmente neste segundo caso, no segundo caso


Com "IN" esse comportamento é bem comum. O IN é bom para um conjunto
limitado de valores. Por exemplo, produto in (10, 20, 40, 50). Fazer
IN para "juntar" tabelas não é a melhor opção.
Tente fazer um join, mais ou menos assim:

SELECT v.chave,
   v.produto
FROM visao v
join produtos_contados pc
  on v.produto = pc.codigo;

Creio que você terá resultados mais performáticos desta forma.

-- 
Marcone Peres - DBA
http://www.linkedin.com/in/marconeperes
@marconeperes
(61) 8146-0028
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a