Re: Speeding up Aggregates

From: Dror Matalon <dror(at)zapatec(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Re: Speeding up Aggregates
Date: 2003-10-03 21:28:48
Message-ID: 20031003212848.GP87525@rlx11.zapatec.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance


Hi Josh,

On Fri, Oct 03, 2003 at 02:07:10PM -0700, Josh Berkus wrote:
> 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.
>

I am using 7.4, and had tried NOT EXISTS and didn't see any
improvements.

> > 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
>

Didn't make a difference. And plugging real values into this query as
well as into the original
select max(dtstamp) from items where channel = $1 and link = $2;

and doing an explain analyze shows that the cost is the same. The
strange things is that when I run the above queries by hand they take
about .5 msec. Yet on a resultset that fetches 5 rows, I go up from 15
msec to 300 msec. It would seem like it should be something like 15 +
(0.5 * 5) + small overhead, = 30 msec or so rather than the 300 I'm
seeing.

> and possibly build an index on channel, link, dtstamp

Didn't make a difference either. Explain analyze shows that it didn't
use it.

>
> --
> -Josh Berkus
> Aglio Database Solutions
> San Francisco
>

--
Dror Matalon
Zapatec Inc
1700 MLK Way
Berkeley, CA 94709
http://www.zapatec.com

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Christopher Browne 2003-10-03 21:34:14 Re: reindex/vacuum locking/performance?
Previous Message Josh Berkus 2003-10-03 21:07:10 Re: Speeding up Aggregates