我需要使用固定文本更新RDBMS表( PostgresSQL )的所有行的文本列。目前,表有大约70万条记录,但预计会增长。使用以下查询,SpringJDBC批量更新很慢,
UPDATE TABLE TABLENAME SET columnname="FIXED VALUE"
此列 NULLABLE 。是否可以使用这两个步骤替换此单个UPDATE语句?
1。首先从表中删除此列
2.将列添加到表,指定默认值为“FIXED VALUE”
我测试了代码,它比UPDATE语句快得多。
我只是想问一下大家是否对删除和添加列的方法有任何负面影响?
我在 Java 中通过 SpringJDBC
运行这些SQL答案 0 :(得分:1)
postgresql的问题是每次更新都需要删除和插入操作。做700k次并且将非常慢,如果该字段有一个索引可能甚至更糟。
我没有看到你的任何问题。我甚至重新创建了整个表格以进行一些更新。但你必须小心,没有其他人使用该表或任何fk关系。
CREATE table_backup AS
SELECT function(field1), function(field2) ....
DROP table_current;
RENAME table_backup to table_current;
CREATE INDEX and CONSTRAINS TO table_current;