How to batch update the following sample more efficiently.
users = [{id: 424, pos: 1}, {id: 23, pos: 2}, {id: 55, pos: 3}, ...]
//currently loop updating each {i}:
UPDATE users SET position = i.pos WHERE id = i.id
How to batch update the following sample more efficiently.
users = [{id: 424, pos: 1}, {id: 23, pos: 2}, {id: 55, pos: 3}, ...]
//currently loop updating each {i}:
UPDATE users SET position = i.pos WHERE id = i.id
You can use unnest()
:
update users u
set position = user.pos
from (values ([{id: 424, pos: 1}, {id: 23, pos: 2}, {id: 55, pos: 3}, ...])
) v(users) cross join lateral
unnest(users) user
where u.id = user.id