Snowflake cloud data platform 雪花支持索引吗?

Snowflake cloud data platform 雪花支持索引吗?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,在Snowflake文档中,我找不到使用索引的参考 Snowflake是否支持索引?如果不支持,那么在使用Snowflake时,性能调优的替代方法是什么?Snowflake不支持索引,尽管它支持“群集”以提高I/O的性能 我建议阅读以下链接以熟悉这一点: 下面是一篇关于这个主题的非常好的博客文章: 希望这有帮助…Rich雪花不使用索引。这是使Snowflake能够很好地扩展任意查询的原因之一。相反,Snowflake计算有关您加载的文件中的列和记录的统计信息,并使用这些统计信息来确定实际加

在Snowflake文档中,我找不到使用索引的参考


Snowflake是否支持索引?如果不支持,那么在使用Snowflake时,性能调优的替代方法是什么?

Snowflake不支持索引,尽管它支持“群集”以提高I/O的性能

我建议阅读以下链接以熟悉这一点:

下面是一篇关于这个主题的非常好的博客文章:


希望这有帮助…Rich

雪花不使用索引。这是使Snowflake能够很好地扩展任意查询的原因之一。相反,Snowflake计算有关您加载的文件中的列和记录的统计信息,并使用这些统计信息来确定实际加载哪些表/记录的哪些部分以执行查询。它还使用列存储文件格式,只读取表中包含您实际使用的字段(列)的部分,从而减少查询中不使用的列的I/O

Snowflake将大表(GB、TB或更大)切成更小的“微分区”。对于每个微分区,它收集关于每列包含的值范围的统计信息。然后,它只加载包含查询所需范围内的值的微分区。例如,假设您有一列时间戳。如果您的查询要求在6月1日至7月1日之间提供数据,则不会根据微分区文件中存储的日期统计信息加载或处理不包含此范围内任何数据的分区


索引通常用于在线事务处理,因为当您处理一个或几个记录时,索引会加速工作流,但当您在大型数据集上运行分析查询时,您几乎总是处理联接和聚合中每个表的大型子集。具有自动统计功能的存储机制可以自动加速如此大的查询,而无需指定索引或调整任何类型的参数。

不,Snowflake不支持索引。不要让他们告诉你这是一种优势。
性能调整可以如上所述,但通常是用金钱完成的:为更大的仓库付费。

雪花不支持索引,它将数据保存在微分区中,或者在另一种意义上,它将数据集分解为小文件,将行格式化为列并压缩它们。服务层中的雪花元数据管理器将拥有每个微分区的所有信息,比如哪个分区有哪些数据。
每个分区都会在标头中包含关于自身的信息,如最大值、最小值、基数等。与传统数据库相比,这比索引要好得多。

没有雪花没有索引。它的性能提升是通过消除不必要的扫描来实现的,这样可以在每个微分区中维护丰富的元数据。例如,如果查询中有一个时间过滤器,并且表或多或少按时间排序,那么雪花可以“修剪”掉表中与查询无关的部分


话虽如此,Snowflake仍在不断发布新功能,其中一个功能就是它的its,它允许您对启用的选定列执行“干草堆中的针”查询。不完全是您可以创建的索引,但可能会在幕后使用类似的索引。

我所知道的每个数据库都收集并使用统计信息。是的,这是真的——snowflake使用所有统计信息获得了更好的吞吐量(从而提高了分析查询性能),比常规数据库使用索引+统计信息获得的更多。假设您有一个表,其中有两个索引,一个针对一种访问类型进行了优化,例如,选择列a,另一个针对列B。这是可能的,因为索引是物理存储的,以实现这一目的。微分区——神奇地为数据访问的每一种方式做每一件事?你知道,当一切都是优势的时候,即使是没有的功能,也不能帮助我理解产品真正的功能。我不理解这种担心。索引具有巨大的存储和更新成本,但它们对于在线系统中的点查询非常有用。点查询在Snowflake中不是很好——它们还不错,但它们不是最优化的情况。如果您想以低延迟进行点查询,Snowflake将比MySQL或DB/2更糟糕。但仍然比Hive/Hadoop好得多。@JonWatte在拥有1000多亿行雪花的TB大小的数据集上运行点查询,它们实际上相当不错