在同一个表psql中创建具有重复数据的列

时间:2016-09-22 06:54:27

标签: sql postgresql

Postgres数据库

我正在尝试找到一种更快的方法来在表中创建一个新列,这是表主键列的副本,所以如果我在名为students的表中有以下列:

student_id Integer Auto-Increment -- Primary key
name varchar

然后我想创建一个名为old_student_id的新列,它与student_id具有相同的值。

为此,我创建了列并执行以下更新语句

update student set old_student_id=student_id

哪个有效,但在我最大的桌子上花了一个多小时,我觉得我应该能够使用某种替代方法将其缩短到几分钟,我只是不知道是什么。

所以我想在一天结束时看起来像这样:

+------------+-----+---------------+
| student_id | name| old_student_id|
+------------+-----+---------------+
| 1          | bob | 1             |
+------------+-----+---------------+
| 2          | tod | 2             |
+------------+-----+---------------+
| 3          | joe | 3             |
+------------+-----+---------------+
| 4          | tim | 4             |
+------------+-----+---------------+

为了在进行更新查询之前加快速度,我将所有FK和Indices放在桌面上,然后在完成后重新应用它们。此外,我在AWS RDS上,因此我设置了一个param组,该组具有synchronized_commits=false,关闭备份,并在此更新期间增加了工作内存。

对于上下文,这实际上发生在数据库中的每个表中,跨三个数据库。旧的ID用作引用这些ID的几个外部系统的参考,因此我需要跟踪它们以便更新这些系统。我有一个8小时的停机时间窗口,目前合并数据库需要大约3个小时,并且花费了整整一个小时来创建这些ID。

0 个答案:

没有答案