2015-04-06 16:58 GMT-03:00 Matheus de Oliveira <matioli.math...@gmail.com>:

> On Mon, Apr 6, 2015 at 4:46 PM, Ariel Alves <arielalves...@gmail.com>
> wrote:
>
>>                  ->  Index Scan using
>> vehiclebusserviceplanned_tripprogramid_idx on vehiclebusserviceplanned vbp1
>>  (cost=0.00..117.25 rows=9 width=16) (actual time=0.387..0.476 rows=0
>> loops=736406)
>>                        Index Cond: (trip_program_id =
>> vbp2.trip_program_id)
>>                        Filter: (('2015-04-06'::date >=
>> (begintimestamp)::date) AND ('2015-04-06'::date <=
>> COALESCE((endtimestamp)::date, '2015-04-06'::date)))
>>
>
> Não analisei a consulta ainda, mas só por esse Index Scan, eu vejo que um
> índice em (trip_program_id, begintimestamp, endtimestamp) seria útil, você
> chegou a tentar esse índice?
>

Ah, aproveitando, se está mapeando o "endtimestamp" como sendo NULL em
casos onde o final não é conhecido, você pode usar o 'infinity', pois
timestamp e timestamptz aceitam '-infinity' e 'infinity'. Se quiser testar
sem alterar a tabela, você pode usar:

    ... AND '2015-04-06' BETWEEN begintimestamp AND COALESCE(endtimestamp,
'infinity')

E um índice em:

    (trip_program_id, begintimestamp, COALESCE(endtimestamp, 'infinity'))

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a