Re: Forcing filter/join order?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Forcing filter/join order?
Дата
Msg-id 28948.1077167299@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Forcing filter/join order?  (Josh Berkus <josh@agliodbs.com>)
Ответы Re: Forcing filter/join order?  (Josh Berkus <josh@agliodbs.com>)
Re: Forcing filter/join order?  (Josh Berkus <josh@agliodbs.com>)
Список pgsql-performance
Josh Berkus <josh@agliodbs.com> writes:
> Knowing that events are never more than one month long for this
> application, I can do:

> "WHERE event.event_date >= (begin_date - '1 month) AND event.event_date <=
> end_date"

> ... which works because I have a child table which has event information by
> day:

Uh, why do you need the child table?  Seems like the correct incantation
given an assumption about maximum duration is

event_date <= 'end-date' AND (event_date + duration) >= 'start-date'
AND event_date >= 'start-date' - 'max-duration'

The last clause is redundant with the one involving the duration field,
but it provides a lower bound for the index scan on event_date.  The
only index you really need here is one on event_date, but possibly one
on (event_date, (event_date + duration)) would be marginally faster.

            regards, tom lane

В списке pgsql-performance по дате отправления:

Предыдущее
От: Josh Berkus
Дата:
Сообщение: Re: Tables on multiple disk drives
Следующее
От: "Saleem Burhani Baloch"
Дата:
Сообщение: Re: Slow response of PostgreSQL