Обсуждение: Implementation of UPDATE

Поиск
Список
Период
Сортировка

Implementation of UPDATE

От
Diogo Biazus
Дата:
Hi folks,

I was wondering if postgres executes a subquery in an UPDATE clause once
and use the result (of the subquery) for all the updates.

Example:
UPDATE table SET field1 = (SELECT field2 FROM table2 WHERE field3 = '123')

Sorry if it seems to be a stupid question, but sometimes this kind of
update is so slow in my server, that makes me suspicious.

TIA

--
Diogo de Oliveira Biazus
diogo@ikono.com.br
Ikono Sistemas e Automação
http://www.ikono.com.br



Re: Implementation of UPDATE

От
Tom Lane
Дата:
Diogo Biazus <diogo@ikono.com.br> writes:
> I was wondering if postgres executes a subquery in an UPDATE clause once
> and use the result (of the subquery) for all the updates.

It should if the subquery is not dependent on any variables of the outer
table.  To tell, run EXPLAIN on the query and look to see if you see
"InitPlan" (done once) or "SubPlan" (done each time result is needed).

            regards, tom lane