Re: 57 minute SELECT

From: Samuel Stearns <sstearns(at)staff(dot)iinet(dot)net(dot)au>
To: Claudio Freire <klaussfreire(at)gmail(dot)com>
Cc: David Johnston <polobo(at)yahoo(dot)com>, "pgsql-performance(at)postgresql(dot)org" <pgsql-performance(at)postgresql(dot)org>
Subject: Re: 57 minute SELECT
Date: 2013-10-03 04:19:29
Message-ID: CB03CD8D2C3F9347BAFEC8EA9DD89C9318D37FD2@ISP-OSB-DAG2.win2k.iinet.net.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Thanks, Claudio.

I'll have a look at the clustering.

We have also noticed that the same query with a datetime range of 3 hours (rather than 4 months) runs in just 30 seconds:

AND datetime <= '2013-10-03 10:03:49'
AND datetime >= '2013-10-03 07:03:49'

-----Original Message-----
From: Claudio Freire [mailto:klaussfreire(at)gmail(dot)com]
Sent: Thursday, 3 October 2013 1:44 PM
To: Samuel Stearns
Cc: David Johnston; pgsql-performance(at)postgresql(dot)org
Subject: Re: [PERFORM] 57 minute SELECT

On Wed, Oct 2, 2013 at 10:47 PM, Samuel Stearns <sstearns(at)staff(dot)iinet(dot)net(dot)au> wrote:
> Thanks, Claudio:
>
> http://explain.depesz.com/s/WJQx

If you have a test database, and if it doesn't hurt other queries of course, try clustering on the ip index.

I believe your problem is that the index isn't helping much, it's probably hurting you in fact. If you cluster over ip, however, the scan will go almost sequentially, and there will be no wasted bytes in the pages fetched, which will be much friendlier on your I/O subsystem.

If I were in your shoes, I'd cluster each of the monthly tables as they become inactive.

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Ivan Voras 2013-10-03 10:08:01 Re: 57 minute SELECT
Previous Message Claudio Freire 2013-10-03 04:13:58 Re: 57 minute SELECT