Оператор обновления в postgresql для объединения нескольких таблиц, я хочу оптимизированное обновление для инструкции обновления ниже, инструкция ниже занимает много времени - PullRequest
0 голосов
/ 05 августа 2020
update tabel1 t1 set column5 = t2.column1, column2 = 0
from table1 t
join table2 t2 on t2.column3 = t.column3
left join table3 t3 on t3.coulmn4 = t.column4
where t3.column5 is null

1 Ответ

2 голосов
/ 05 августа 2020

Как описано в руководстве :

Не повторяйте целевую таблицу как from_item, если только вы не намереваетесь самостоятельно присоединиться

Итак , не повторяйте целевую таблицу в предложении FROM:

update table1 t1
   set column5 = t2.column1, 
       column2 = 0
from table2 t2 
  left join table3 t3 on t3.column4 = t2.column4
where t2.column3 = t1.column3 --<< this replaces the original JOIN to t1
  and t3.column5 is null
...