From: Arnaud Lesauvage <thewild@freesurf.fr>
To: Jens Schipkowski <jens.schipkowski@apus.co.at>
Cc: pgsql-performance@postgresql.org
Subject: Re: Slow update with simple query
Date: Wed, 13 Dec 2006 13:23:41 +0100
Message-ID: <457FF0CD.4050606@freesurf.fr> (raw)
In-Reply-To: <op.tkhy4jpg81rjf6@xjens.apus.local>
References: <457FDB1E.6040801@freesurf.fr>
<op.tkhy4jpg81rjf6@xjens.apus.local>
Jens Schipkowski a écrit :
> the problem is a combination of bad formed SQL and maybe missing indexes.
> try this:
> UPDATE t1
> SET booleanfield = foo.bar
> FROM (SELECT uid,(field IN ('some','other') AND field2 = 'Y') AS bar FROM
> t2) AS foo
> WHERE t1.uid=foo.uid;
Hi Jens,
Why is this query better than the other one ? Because it runs the
"(field IN ('some','other') AND field2 = 'Y')" once and then executes
the join with the resulting set ?
> and index t1.uid, t2.uid, t2.field, t2.field2
t1.field can only take 3 or 4 values (don't remember exactly), and
field2 only 2 ('Y' or 'N'). So this fields have a very low cardinality.
Won't the planner chose to do a table scan in such a case ?
Thanks for your advices !
--
Arnaud
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: thewild@freesurf.fr, jens.schipkowski@apus.co.at
Subject: Re: Slow update with simple query
In-Reply-To: <457FF0CD.4050606@freesurf.fr>
* 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