替换UPDATE SQL vs Drop&添加具有默认值的COLUMN?

时间:2015-10-15 15:21:34

标签: sql postgresql jdbc

我需要使用固定文本更新RDBMS表( PostgresSQL )的所有行的文本列。目前,表有大约70万条记录,但预计会增长。使用以下查询,SpringJDBC批量更新很慢,

UPDATE TABLE TABLENAME SET columnname="FIXED VALUE"

此列 NULLABLE 。是否可以使用这两个步骤替换此单个UPDATE语句?

1。首先从表中删除此列

2.将列添加到表,指定默认值为“FIXED VALUE”

我测试了代码,它比UPDATE语句快得多。

我只是想问一下大家是否对删除和添加列的方法有任何负面影响?

我在 Java 中通过 SpringJDBC

运行这些SQL

1 个答案:

答案 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;