pg.ddx.io pgsql-performance@postgresql.org mailing list archive
help / color / mirror / Atom feed From: Tom Lane <tgl@sss.pgh.pa.us>
To: Josh Berkus <josh@agliodbs.com>
Cc: pgsql-performance@postgresql.org, Shaun Thomas <sthomas@peak6.com>
Subject: Re: Postgres refusing to use >1 core
Date: Thu, 12 May 2011 10:51:42 -0400
Message-ID: <15686.1305211902@sss.pgh.pa.us> (raw )
In-Reply-To: <4DCB346E.8070608@agliodbs.com >
References: <BANLkTimohiUa6rOYdxYTwqmvSUg2CRYMHg@mail.gmail.com >
<4DC81A3F020000250003D433@gw.wicourts.gov >
<BANLkTimNTLqQgQeyu=FPOn-5x6F4XnVBJA@mail.gmail.com >
<4DC81D56020000250003D438@gw.wicourts.gov >
<BANLkTi=FH4rX-7OtS9ozjuyXQTNTiRqCmg@mail.gmail.com >
<BANLkTinwkj7syvKkYzU_O7DD14EMzk2Zmg@mail.gmail.com >
<BANLkTi=BvGMvsBNq8DUt=_MPJXZjcC0TWg@mail.gmail.com >
<4DC8B893.3060908@postnewspapers.com.au >
<BANLkTimi+2nviLvWU4zKGtG688+Z84DF6w@mail.gmail.com >
<4DC9E7C5.9080309@postnewspapers.com.au >
<BANLkTi=PxROPQFDt1a6N68e_+5_AojagmA@mail.gmail.com >
<4DCAB3A1.2090507@peak6.com >
<201105111953.060147@ms14.lnh.mail.rcn.net >
<4DCB0802.9060505@peak6.com >
<4DCB346E.8070608@agliodbs.com >
Josh Berkus <josh@agliodbs.com> writes:
> On 5/11/11 3:04 PM, Shaun Thomas wrote:
>> The original query, with our very large tables, ran for over *two hours*
>> thanks to a nested loop iterating over the subquery. My replacement ran
>> in roughly 30 seconds. If we were using a newer version of PG, we could
>> have used a CTE. But do you get what I mean? Temp tables are a fairly
>> common technique, but how would a coder know about CTEs? They're pretty
>> new, even to *us*.
> For that matter, it would be even better if PostgreSQL realized that a
> materialize of the subquery was a better execution plan, and just did it
> for you.
It does. I was a bit surprised that Shaun apparently got a plan that
didn't include a materialize step, because when I test a similar query
here, I get:
1. a hash join, until I turn off enable_hashjoin; then
2. a merge join, until I turn off enable_mergejoin; then
3. a nestloop with materialize on the subquery scan.
In 9.0 and up I can get a nestloop without materialize by also turning
off enable_material, but pre-9.0 there's no such option ...
regards, tom lane
view thread (46+ messages) latest in thread
Message-ID: <15686.1305211902@sss.pgh.pa.us>
Permalink: ../15686.1305211902@sss.pgh.pa.us/
Also on: postgresql.org/message-id/15686.1305211902@sss.pgh.pa.us
copy link · copy postgr.es
reply Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-performance@postgresql.org
Cc: tgl@sss.pgh.pa.us, josh@agliodbs.com, sthomas@peak6.com
Subject: Re: Postgres refusing to use >1 core
In-Reply-To: <15686.1305211902@sss.pgh.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox