Em 22 de junho de 2017 20:57, Marcelo Costa <marcelojsco...@gmail.com> escreveu:
>
> Pessoal,
>
> Alguém que saque de query planner pra ajudar?
>
> Quero entender pq ele roda um planner global ao invés de parciais.
>
> Minha query:
>
> select count(*) from table1 where time > (select time from table2 where X = Y)
>
> O PG está fazendo uma seqscan na table1 mesmo que a coluna time seja uma 
> coluna indexada.
>
> Mas ele usa o indice se eu faço:
>
> select count(*) from table1 where time > 1498083552
>
> Então meu problema é que, como ele não sabe o valor de filtragem de time, na 
> duvida manda fazer seqscan.
>
> Pergunta:
>
> Existe alguma forma de mandar ele rodar o query planner por etapas?
>
> Primeiro pra subquery e depois pra query principal?
>

Com CTE você consegue este comportamento. Tenta isto:

WITH table2cte (time) AS (
    select time from table2 where X = Y
)
select count(*) from table1, table2cte where time > table2cte.time


Tiago J. Adami
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a