Redshift 更改查询

Posted

技术标签:

【中文标题】Redshift 更改查询【英文标题】:Redshift Alter query 【发布时间】:2020-09-29 11:11:11 【问题描述】:

在下面的查询中,我们在 Redshift 中使用为拆分函数添加新列。我想知道,这是最好的方式(在性能方面)还是其他方式?请告诉我 。因为我在这个查询中遇到了性能问题

ALTER TABLE schemaname.test ADD COLUMN WASD_3 VARCHAR DEFAULT NULL;
UPDATE schemaname.test
SET WASD_3=SPLIT_PART(details, '_', 1)::VARCHAR

【问题讨论】:

表格有多少行和多少列? 300,000 条记录和 20 列 这不是一个巨大的数字(例如数百万或数十亿),所以我建议您做一些时序测试,看看您是否对UPDATE + VACUUM 满意,或者您是否需要增加额外的努力以选择不同的表格。 【参考方案1】:

UPDATE 命令在 Amazon Redshift 中的效率非常低,因为整个现有行都被标记为“已删除”,并且在行存储块的末尾附加了一个新行。这意味着数据在表被清理之前是未排序的。

如果表很大,将数据选择到新表中然后将数据复制回原始表或重命名表会更有效。

【讨论】:

以上是关于Redshift 更改查询的主要内容,如果未能解决你的问题,请参考以下文章

Redshift WLM:“最终队列可能不包含用户组或查询组”

redshift 更改 udf 更改所有者

在 REDSHIFT 中的 ALTER 语句中连接字符串(语法错误)

更改 Redshift 表的所有权会引发“必须是超级用户才能更改所有者”

Redshift 使用数据更改数字列

更改 Redshift 视图以指向新表