分区修剪如何在雪花 table 中的整数列上工作

How partiton pruning works on integer column in snowflake table

我有一个 table in snowflake 大约有 1000 列,我有一个整数类型的 id 列

当我运行查询时

select * from table where id=12 它正在扫描所有微分区。我期望雪花将维护 id 列的 min/max 的元数据,并且基于它应该只扫描一个分区而不是所有分区。

在此文档中 https://docs.snowflake.com/en/user-guide/tables-clustering-micropartitions.html 提到他们维护 min/max ,每个微分区中列的不同值。

在这种情况下,我如何利用分区 p运行ing?目前,即使对于唯一 ID,snowflake 也在扫描所有分区。

不幸的是,它比那复杂一点。如果您的 table 被您的 id 列完全 集群 ,Snowflake 将只扫描一个分区,但它可能不是,也不应该是。 Snowflake 是一个数据仓库,不适合 single-row 查找。

您始终可以通过 id 列将 table 聚类,但这通常是您不想在仓库中执行的操作。我建议阅读 this document 以了解 table 聚类的工作原理。