use*_*760 6 sql-update amazon-redshift
我在Redshift集群中有一个表,行数约为10亿.我有一个作业试图根据一些过滤器更新一些列值.在此表中更新任何内容都非常慢.这是一个例子:
SELECT col1, col2, col3
FROM SOMETABLE
WHERE col1 = 'a value of col1'
AND col2 = 12;
Run Code Online (Sandbox Code Playgroud)
上面的查询在不到一秒的时间内返回,因为我有sortkeys col1和col2.只有一行符合此条件,因此结果集只有一行.但是,如果我跑:
UPDATE SOMETABLE
SET col3 = 20
WHERE col1 = 'a value of col1'
AND col2 = 12;
Run Code Online (Sandbox Code Playgroud)
此查询需要一段未知的时间(我在20分钟后停止了).同样,它应该更新一行的一个列值.
我还尝试按照此处的文档:http://docs.aws.amazon.com/redshift/latest/dg/merge-specify-a-column-list.html,其中讨论了如何创建临时临时表以进行更新主表,但得到了相同的结果.
知道这里发生了什么吗?
Joe*_*ris 10
您没有提到要更新的表的百分比,但重要的是要注意UPDATERedshift中的一个步骤是两个步骤:
如果您有大量列和/或正在更新大量行,则此过程对于数据库来说可能非常耗费人力.
您可以尝试使用CREATE TABLE AS语句创建表的新"更新"版本,然后删除现有表并重命名新表.这样做的另一个好处是可以为您提供完全排序的表格.