一尘不染

更新表中所有行的有效方法

sql

我的桌子上有很多记录(可能超过500 000或1 000 000)。我在此表中添加了一个新列,我需要使用该表中另一列的相应行值为该列中的每一行填充一个值。

我尝试使用单独的事务来选择每100条记录的下一个块并为其更新值,但是例如,要花费数小时来更新Oracle10中的所有记录。

在不使用某些方言特定功能的情况下,在SQL中执行此操作的最有效方法是什么,因此它可在任何地方(Oracle,MSSQL,MySQL,PostGre等)使用?

其他信息:没有计算字段。有索引。使用生成的SQL语句逐行更新表。


阅读 150

收藏
2021-03-10

共1个答案

一尘不染

通常的方法是使用UPDATE:

UPDATE mytable
   SET new_column = <expr containing old_column>

您应该能够完成这笔交易。

2021-03-10