Re: Order by (for 15 rows) adds 30 seconds to query time

From: Richard Neill <rn214(at)cam(dot)ac(dot)uk>
To: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>
Cc: Richard Neill <rn214(at)cam(dot)ac(dot)uk>, Matthew Wakeling <matthew(at)flymine(dot)org>, jmpoure(at)free(dot)fr, PostgreSQL Performance <pgsql-performance(at)postgresql(dot)org>, Craig Ringer <craig(at)postnewspapers(dot)com(dot)au>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Subject: Re: Order by (for 15 rows) adds 30 seconds to query time
Date: 2009-12-03 01:31:01
Message-ID: 4B1714D5.6010106@cam.ac.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Kevin Grittner wrote:
> Richard Neill <rn214(at)cam(dot)ac(dot)uk> wrote:
>
>> Regarding pg_statistic, I don't understand how to find the
>> relevant rows - what am I looking for? (the pg_statistic table is
>> 247M in size).
>
> I think the only relevant rows would be the ones with starelid =
> pg_class.oid for a table used in the query, and I think you could
> further limit it to rows where staattnum = pg_attribute.attnum for a
> column referenced in the WHERE clause or a JOIN's ON clause
> (including in the views). To help match them up, and to cover all
> the bases, listing the related pg_class and pg_attribute rows would
> help.
>
> Hopefully that will allow us to generate the same plan in an
> EXPLAIN, and then see how it gets such an overblown estimate of the
> result rows.

Thanks for your explanation. I ran the query:

SELECT * from pg_statistic WHERE starelid IN
(SELECT oid FROM pg_class where relname IN
('demand','waypoint','actor','location','material','inventory')
);

and it's 228kB compressed, so rather than attaching it, I'm placing it
here: http://www.richardneill.org/tmp/pg_statistic.bz2

Likewise, the much smaller (16kB) output from:

SELECT * from pg_class where relname IN
('demand','waypoint','actor','location','material','inventory');

SELECT * from pg_attribute ;

is at: http://www.richardneill.org/tmp/pg_attribute_pg_class.bz2

P.S. Would it be easier for you if I set up SSH access to a spare
machine, with a copy of the database?

Thanks very much for your help,

Richard

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Scott Carey 2009-12-03 03:15:37 Re: Query times change by orders of magnitude as DB ages
Previous Message Ashish Kumar Singh 2009-12-02 23:31:46 performance while importing a very large data set in to database