From: Simon Riggs <simon@2ndquadrant.com>
To: Tomasz Ostrowski <tometzky@batory.org.pl>
Cc: pgsql-bugs@postgresql.org
Cc: pgsql-performance@postgresql.org
Subject: Re: query very slow when enable_seqscan=on
Date: Tue, 04 Jul 2006 00:05:42 +0100
Message-ID: <1151967943.2479.330.camel@localhost.localdomain> (raw)
In-Reply-To: <20060703203105.GA2801@batory.org.pl>
References: <20060703203105.GA2801@batory.org.pl>
On Mon, 2006-07-03 at 22:31 +0200, Tomasz Ostrowski wrote:
> I have a very slow query when enable_seqscan=on and very fast when
> enable_seqscan=off. My schema looks like this (relevant columns
> only):
> PS. Actual table and column names are different (they're in Polish)
> but I've translated them for better readability for english-speaking.
Thanks
> PS. I wonder if it makes sense to "enable_seqscan=off" for every client
> if a database is small enough to fit in OS cache.
You can set this for individual statements if you choose to.
> -> Seq Scan on organization (cost=0.00..480.95 rows=1
> width=4) (actual time=0.071..69.702 rows=1892 loops=1)
> Filter: ((organization_location)::text ~*
> 'warszawa'::text)
The issue is caused by the under-estimation of the number of rows in the
table as a result of the regular expression comparison. As a result the
planner thinks it can choose a nested loops scan, though ends up doing
1892 seq scans of persons, when it thought it would do only one.
The under estimation is a known issue. Posting to -perform for the
record.
--
Simon Riggs
EnterpriseDB http://www.enterprisedb.com
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: simon@2ndquadrant.com, tometzky@batory.org.pl, pgsql-bugs@postgresql.org
Subject: Re: query very slow when enable_seqscan=on
In-Reply-To: <1151967943.2479.330.camel@localhost.localdomain>
* 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