Join optimisation Quandry

Поиск
Список
Период
Сортировка
От Ceri Storey
Тема Join optimisation Quandry
Дата
Msg-id 20040114231014.GE53284@mrtall.compsoc.man.ac.uk
обсуждение исходный текст
Ответы Re: Join optimisation Quandry  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
Список pgsql-performance
Hi there.

I've got a database (the schema is:
http://compsoc.man.ac.uk/~cez/2004/01/14/tv-schema.sql) for television
data. Now, one of the things I want to use this for is a now and next
display. (much like http://teletext.com/tvplus/nownext.asp ).

I've got a view defined like this:
CREATE VIEW progtit AS SELECT programme.*, title_seen, title_wanted, title_text FROM (programme NATURAL JOIN title);

And to select the programmes that are on currently and next, I'm doing
something like this:

SELECT *
FROM progtit AS p1 LEFT JOIN progtit AS p2 ON p1.prog_next = p2.prog_id
WHERE prog_start <= '2004-01-14 23:09:11'
    AND prog_stop > '2004-01-14 23:09:11';

Now, unfourtunately this runs rather slowly (takes around 1sec to
complete on my machine), as it (AFAIK) ends up building a complete
instance of the progtit view and then joining the current programmes
with that, instead of just finding the current set of programs and then
selecting the relevant rows from the view.

Now, I know I could just two it in two seperate passes for the current
programmes and those after them, but I'd be neater to do it in one.

So, is there any way to optimize the above query? Any clues, or
references would be wonderful.

Thanks.
--
Ceri Storey <cez@necrofish.org.uk>

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

Предыдущее
От: "Jeremy M. Guthrie"
Дата:
Сообщение: Question about space usage:
Следующее
От: Larry Rosenman
Дата:
Сообщение: Re: Postgres on Netapp