Re: Slow update with simple query

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux