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