用默认值替换 UPDATE SQL vs Drop & Add COLUMN?
Posted
技术标签:
【中文标题】用默认值替换 UPDATE SQL vs Drop & Add COLUMN?【英文标题】:Replacing UPDATE SQL vs Drop & Add COLUMN with default value? 【发布时间】:2015-10-15 15:21:34 【问题描述】:我需要使用固定文本更新 RDBMS 表 (PostgresSQL) 的所有行的文本列。目前,表有大约 70 万条记录,但预计会增长。 SpringJDBC 批量更新很慢,以下查询,
UPDATE TABLE TABLENAME SET columnname="FIXED VALUE"
此列NULLABLE。是否建议用这两个步骤替换此单个 UPDATE 语句?
1。首先从表中删除此列
2.将列读取到表中,指定默认值为“FIXED VALUE”
我测试了代码,它比 UPDATE 语句快得多。
我只是想问你们,再次删除和添加列的方法是否有任何负面影响?
我通过 SpringJDBC
在 Java 中运行这些 SQL【问题讨论】:
【参考方案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;
【讨论】:
以上是关于用默认值替换 UPDATE SQL vs Drop & Add COLUMN?的主要内容,如果未能解决你的问题,请参考以下文章
SQL语言中add,alter,drop和insert,update,delete的区别?