【发布时间】:2020-09-12 22:49:25
【问题描述】:
我在 Snowflake 有一张桌子。表中的一列称为obj_key(对象键)。
表大小非常大(以 TB 为单位),因此需要性能。
现在,每次对对象进行更新时,都会向表中添加一个新条目。新插入的行具有相同的obj_key,但time_modified 列中的条目不同。假设我想根据某些条件从表中获取不同的obj_key。
我有三种方法:
方法一:
SELECT obj_key
FROM my_table
WHERE some_condition
GROUP BY obj_key;
方法二:
SELECT distinct(obj_key)
FROM my_table
WHERE some_condition;
方法3:
SELECT obj_key
FROM my_table
WHERE some_condition
QUALIFY ROW_NUMBER() OVER (PARTITION BY obj_key ORDER BY obj_key) = 1;
所以基本上我的问题归结为以下几点:
我读过distinct 在多个列上由group_by(col1, col2, ..., col n) 执行。那么两者的性能有何不同(如果有的话)?
由于PARTITION BY 也需要ORDER BY,它不会大幅降低性能吗?
如果有人能提供这些查询如何在 SnowFlake 上运行的详细信息,我会很高兴。
【问题讨论】:
标签: database group-by distinct snowflake-cloud-data-platform partition-by