gpt4 book ai didi

snowflake-cloud-data-platform - 需要有关 Snowflake 优化器的信息

转载 作者:行者123 更新时间:2023-12-01 23:16:52 25 4
gpt4 key购买 nike

Snowflake 使用哪种优化器,基于规则还是基于成本。无法获取任何文档,需要解释如何编写更好的查询。

最佳答案

我发现“了解‘规则’”的帮助不如了解系统正在做什么更有帮助。

我发现向新团队成员描述它有大量的表扫描,可以进行 map/reduce/merge 连接。

您可以通过选择获得所需答案所需的最小列集来加快表格扫描速度。

存在分区修剪,因此如果您的数据按“插入/排序”顺序排列 x 1-2,3-4,5-6并且您的查询有 x = 5 , 那么前两个分区将不会被读取。

接下来因为都是merge join,equi join是最快的事情。 [编辑:]这是在说,在百万行以上的顺序。根据复杂的连接逻辑将 100 万行连接到 100 万行,例如 a.v1 > b.v2 or a.v2 < b.v3 ... etc意味着你必须或多或少地让你的万亿行以上,然后试试看。 Where-as 好像你可以加入精确值 a.v1 = b.v2 and a.v2 = b.v2现在可以根据这些键对数据进行排序,并且可以完成合并连接,并且您的性能非常好(维基百科上的 sort-merge join)。

这意味着有时在不同的 CTE 中多次从同一组源表中读取数据并将这些表连接起来可能是处理大量数据的最快方式。[编辑:]在上述语句的上下文中,人们经常在小型 db SQL 中进行相关子查询,因为 a) 你可以,为什么不可以,b) 它们可以在索引数据库上快速运行。但是在没有索引的雪花中,除了优化器不支持大多数相关的子查询之外,您通常应该避免使用它们并在两个 CTE 中读取数据两次并通过等值连接加入/左连接它们以回答以下问题已完成,因为 CTE 的任务是独立的,因此是可并行化的,并且合并连接接近最优。计算不在主联接体中的数据的浪费(让假装小计)小于并行性的 yield 。 (与加速小于 5 秒大小的查询相比,这最适合 30 秒或更长范围内的查询)。但是对于所有事情,都有一个基础模型,尝试/实验,戳和慢的东西,直到你无法重组你的数据或查询以使其更快。

一如既往地查看运行查询的配置文件,寻找有许多行被丢弃的区域,并思考如何重构逻辑以在管道中更早地插入这些限制。

关于snowflake-cloud-data-platform - 需要有关 Snowflake 优化器的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68693531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com