Oi Hasse,

Obrigado pela sua explicação, vou testar isso aqui, existe alguma outra
possibilidade sem criar as tmp tables??



2009/8/13 Mozart Hasse <[email protected]>

> Olá Rauni,
>
> Um jeito de ensinar SQL para o otimizador do Postgres é o seguinte:
>
> create index tmp2 on hotel_description_translation (id,lang);
>
> create temporary table x as
> select d.description_type_id, t.lang, count( t.id ) as count
> from hotel_description_translation as t
> group by t.id, t.lang;
>
> select d.description_type_id,t.lang
> from x t
> inner join hotel_description_translation d ON ( d.id = t.id );
>
> Ou seja: crie uma tabela temporária contendo as totalizações, usando apenas
> a tabela filha.
> Essa consulta será simples o suficiente para o otimizador do Postgres usar
> o
> índice e montar os totais rapidamente (a consulta completa pelo visto é
> complicada demais para ele...).
> Depois, sobre uma tabela muito menor, mesmo sem usar índices, o Hash Join
> do
> Postgres vai ter um desempenho mais aceitável.
>
> Não tenho tuas tabelas, mas com duas minhas de volume e proporção similares
> a resposta foi 5 vezes mais rápida.
>
> Atenciosamente,
>
> Mozart Hasse
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Nei Rauni Santos
[email protected]
+55 41 85020985
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a