Re: Slow update with simple query
От | Arnaud Lesauvage |
---|---|
Тема | Re: Slow update with simple query |
Дата | |
Msg-id | 457FF0CD.4050606@freesurf.fr обсуждение исходный текст |
Ответ на | Re: Slow update with simple query ("Jens Schipkowski" <jens.schipkowski@apus.co.at>) |
Ответы |
Re: Slow update with simple query
|
Список | pgsql-performance |
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
В списке pgsql-performance по дате отправления: