【发布时间】:2013-09-18 19:52:07
【问题描述】:
我正在尝试使用 postgres 更新多行,我正在使用以下代码:
UPDATE foobar SET column_a = CASE
WHEN column_b = '123' THEN 1
WHEN column_b = '345' THEN 2
END;
如果我创建一个新表,它可以完美地工作,但是当在一个有 800 万行的大表上运行它时,它会无限期地挂起。我首先在 Adminer(网络界面)和控制台中尝试过。
但是这很好用:
UPDATE foobar SET column_a=1 WHERE column_b='123';
我对在我的代码中实施这种方法犹豫不决,因为我会同时进行数千次更新,并且更愿意将它们放在一个语句中。关于为什么第一个示例会挂起 postgres 而第二个示例可以正常工作的任何想法?我只是仔细检查了一下,我没有在桌子上应用任何规则。
【问题讨论】:
-
您真的要更新 800 万行吗?你能提供真正的命令和
EXPLAIN ANALYZE吗?这些几乎没有任何意义...... -
似乎是这个问题的后续:stackoverflow.com/questions/18797608/…
标签: sql postgresql sql-update case