Clustering Keys是否可以在临时表和Transient表上进行定义?
回答结论
Clustering Keys 完全支持在临时表、Transient表上定义,配置、使用逻辑和永久表的聚簇键没有差异。
补充说明
- Snowflake的三类表(永久表、Transient表、临时表)都支持在建表时通过
CLUSTER BY子句指定聚簇键,也支持建表后通过ALTER TABLE语句新增、修改、删除聚簇键。 - 临时表仅对当前会话可见,会话结束后自动销毁,给临时表加聚簇键适合单次会话内需要对大量临时数据做多次范围查询、过滤的场景,能明显提升查询性能,不会产生跨会话的遗留配置。
- Transient表本身不保留故障恢复之外的历史数据、也没有故障安全(Fail-safe)周期,聚簇键对应的自动重聚簇成本也比永久表更低,适合存储不需要长期保留、但访问频次较高的中间数据。
- 所有表类型的聚簇键自动重聚簇产生的计算成本,均按实际使用的云服务 credits 计费,临时表销毁后对应的聚簇相关存储、计算成本也会同步停止计算。
语法示例
-- 创建带聚簇键的临时表 CREATE TEMPORARY TABLE temp_user_logs ( user_id INT, event_date DATE, event_content STRING ) CLUSTER BY (event_date, user_id); -- 创建带聚簇键的Transient表 CREATE TRANSIENT TABLE transient_merchandise_sales ( merch_id INT, sale_date DATE, sale_amount NUMBER(10,2) ) CLUSTER BY (sale_date, merch_id);
内容的提问来源于stack exchange,提问作者Anto
相关产品推荐
相关产品推荐

