如何以最佳方式将列添加到 table 大尺寸?
How to optimally add columns to a table of large size?
我有一个包含数百万行数据的 table。现在对于一些新的传入数据,我必须存储更多的属性。在此阶段更改 table 以创建新列将消耗大量计算能力,因为 table 已经有数百万行数据。如果不时添加此类新属性,存储此新数据的最佳方式是什么?
编辑:根据用户的建议,我想添加我正在使用的平台:SnowFlake 云数据平台。
不要太担心添加列所需的计算能力 - 这主要是一个逻辑问题,而不是物理问题。
我用 840 万行做了这个测试 table:
create table clone1
clone my_big_table;
alter table clone1
add column justtest NUMBER(38,0);
-- adding a column was a quick operation, just metadata probably (210ms)
create table lone2
clone my_big_table;
alter table clone2
add column justtest NUMBER(38,0) default 7;
-- adding a column with a default value was a quick operation too, just metadata probably (256ms)
select justtest
from clone2
limit 10;
-- correct data returned
create table clone3
clone my_big_table;
alter table clone3
add column justtest NUMBER(38,0) default 7;
-- again, adding a column with a default value was quick
update clone3
set justtest=1;
-- this took a longer time - changing an existing value for a new one (1min 18s)
向 table 添加列应该不是问题 - 之前只需使用 table 克隆测试操作即可。
我有一个包含数百万行数据的 table。现在对于一些新的传入数据,我必须存储更多的属性。在此阶段更改 table 以创建新列将消耗大量计算能力,因为 table 已经有数百万行数据。如果不时添加此类新属性,存储此新数据的最佳方式是什么?
编辑:根据用户的建议,我想添加我正在使用的平台:SnowFlake 云数据平台。
不要太担心添加列所需的计算能力 - 这主要是一个逻辑问题,而不是物理问题。
我用 840 万行做了这个测试 table:
create table clone1
clone my_big_table;
alter table clone1
add column justtest NUMBER(38,0);
-- adding a column was a quick operation, just metadata probably (210ms)
create table lone2
clone my_big_table;
alter table clone2
add column justtest NUMBER(38,0) default 7;
-- adding a column with a default value was a quick operation too, just metadata probably (256ms)
select justtest
from clone2
limit 10;
-- correct data returned
create table clone3
clone my_big_table;
alter table clone3
add column justtest NUMBER(38,0) default 7;
-- again, adding a column with a default value was quick
update clone3
set justtest=1;
-- this took a longer time - changing an existing value for a new one (1min 18s)
向 table 添加列应该不是问题 - 之前只需使用 table 克隆测试操作即可。