Re: Speeding up Aggregates - Mailing list pgsql-performance

From Josh Berkus
Subject Re: Speeding up Aggregates
Date
Msg-id 200310031407.10343.josh@agliodbs.com
Whole thread Raw
In response to Speeding up Aggregates  (Dror Matalon <dror@zapatec.com>)
Responses Re: Speeding up Aggregates  (Dror Matalon <dror@zapatec.com>)
List pgsql-performance
Dror,

> select articlenumber, channel, description, title, link, dtstamp  from
>     items, my_channels where items.channel = '22222' and my_channels.id =
>     '22222' and owner = 'drormata'  and dtstamp > last_viewed and
>     articlenumber not in (select item from viewed_items where channel
>     ='22222' and owner = 'drormata');

the NOT IN is a bad idea unless the subselect never returns more than a
handful of rows.  If viewed_items can grow to dozens  of rows, wyou should
use WHERE NOT EXISTS instead.  Unless you're using 7.4.

> item_max_date() looks like this:
>    select max(dtstamp) from items where channel = $1 and link = $2;

Change it to

SELECT dtstamp from iterm where channel = $1 and link = $2
ORDER BY dtstamp DESC LIMIT 1

and possibly build an index on channel, link, dtstamp

--
-Josh Berkus
 Aglio Database Solutions
 San Francisco


pgsql-performance by date:

Previous
From: Tom Lane
Date:
Subject: Re: reindex/vacuum locking/performance?
Next
From: Dror Matalon
Date:
Subject: Re: Speeding up Aggregates