gpt4 book ai didi

sql - 向具有数十亿行的列数据库添加新列

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:00 25 4
gpt4 key购买 nike

我想在一个已经包含数十亿行的表中添加一个新列。新列派生自现有列。

例如,

new_col1 = old_col1 + old_col2
new_col2 = old_col1 / old_col2

我正在尝试通过以下方式做到这一点 -

添加新列

ALTER TABLE table_name
ADD ( column_1 column-definition,
column_2 column-definition,
...
column_n column_definition )

从表中逐行读取并填充新列的值。

数据库中没有主键。所以我不能引用单独的行。要逐行读取,我必须执行 select *,这会产生一个巨大的结果集(考虑数十亿条记录)。

有没有更好的方法来做到这一点?

最佳答案

不同的 DBMS 有不同的 SQL 方言,在问题中指定您使用的是哪一种方言很有用。

在 SQL Server 中,您可以使用 Computed Column但这会在您每次选择数据时计算结果,您可以将其标记为持久化但可能需要一段时间才能进行更改。但是,如果您要删除旧列,则不能这样做。

或者创建允许空值的新列,然后批量更新它

UPDATE TOP (1000) table_name SET new_col1 = old_col1 + col_col2 WHERE new_col1 IS NULL

同样,查询是针对 SQL Server 的,但是对于您的 DBMS 会有替代方案。

另请阅读 Hoopers 先生关于向新列添加索引以确保 UPDATE 的性能不会随着添加更多数据而变差的评论。更新是一个读写操作,索引会加快读取速度并略微延迟写入(维护索引),但它应该是值得的。

关于sql - 向具有数十亿行的列数据库添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3279763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com