- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
像 MySQL 和 SQL Server 一样使用 Snowflake 创建参数化。需要从 .NET Snowflake .NET Connector 传递值。 https://www.mssqlti
在 snowflake/sql 查询中是否有任何方法可以查看哪些表被查询最多以及哪些列?我想知道哪些数据对我的用户最有值(value),但不确定如何以编程方式执行此操作。任何想法表示赞赏 - 谢谢!
目前我们的项目正在使用 Snowflake DWH。表中定义的列没有任何大小规范。不知道为什么这样做,因为很久以前就这样做了。如果未指定大小时,Snowflake DWH 是否会影响性能。例如,默认情
我在 SAP HANA 中为四分之一函数编写了“选择”查询。 select QUARTER (CURRENT_DATE, 8) FROM DUMMY; output: 2021-Q3 有人可以帮我解决
当我们创建数据库时会创建一个公共(public)模式,如果我们不指定任何模式,则会在公共(public)模式下创建表。如果您在从数据库中删除公共(public)模式时看到或遇到任何问题,能否告诉我,因
我有大约 2.2 GB 数据的大表。当我使用 SELECT * 选择表中的一行时,运行大约需要 14 分钟。有没有办法加快这个查询? 以下是一些可能有用的其他信息: ~ 200 万行 ~ 25k 列
我需要将表恢复到运行 CREATE OR REPLACE 语句之前的状态(即表仍然填充)。 我可以在历史记录中看到 QueryID,但我终生不记得我是如何还原更改的 最佳答案 解决方案已由 Franc
我正在寻找有关如何从现有表生成汇总表或 View 的一些 Snowflake 语法帮助。我的汇总表应该有来自现有表的每个唯一 ID 的 1 行以及指示是否已达到各种里程碑(根据汇总列名称)的 bool
我正在查看 WAREHOUSE_EVENTS_HISTORY,但找不到跟踪仓库大小调整值的方法。 如何从 Snowflake 中获取这些数据? (基于客户问题) 最佳答案 要跟踪调整大小的值,您可以在
我已经创建了单独的过程,当手动运行时使用 2 个日期参数运行。但是我正在尝试编写一个包装程序来顺序调用这些过程。到目前为止我所做的示例代码如下。 CREATE OR REPLACE PROCEDURE
在雪花文档中,我找不到使用索引的引用。 Snowflake 是否支持索引,如果不支持,使用 Snowflake 时性能调优的替代方法是什么? 最佳答案 Snowflake 不支持索引,但它支持“集群”
我们正在考虑将我们的 ODS 从 S3 转移到 Snowflake,但对性能有一些担忧。从 15 亿(这将在较小的一侧)行表中删除 3900 万行在超小型仓库上需要 15 分钟,小型仓库需要 8 分钟
(代表 Snowflake 用户提交) 在 Snowflake 上执行查询时,我需要它的查询 ID。所以我使用以下代码片段: cursor.execute(query, _no_results=Tru
当谈到集群大小时,文档指出,例如一个 XS 集群包含在 1 个服务器上。但是我一直在寻找服务器规范,但似乎找不到有关此主题的任何文档。 最佳答案 对于 AWS 雪花,如果您在 Chrome (F12)
我了解启用集群后,Snowflake 将运行后台任务来自动对您的记录进行集群。在某些情况下,我想重建整个表或使用 insert into select 语句填充新表。当我这样做时,我发现即使我预定义了
我是 SnowFlake 的新手。我在 Snowflake 中创建了一个表。以下是详细信息。 # Created @ 2020-01-07 21:11:20.810 -0800 CREATE TABL
我正在使用 Snowflake,我很惊讶它能够即时调整大小。这是一个非常10s video它如何立即调整大小,并且查询在下次运行时仍然是“热”的(注意我在查询中有一个CURRENT_TIMESTAMP
我需要一些关于雪花存储过程与用户定义函数的最佳用例的指导。请问是否有关于其中一个比另一个更合适的场景的指南?我正在努力为我的项目做出正确的选择。谢谢。 最佳答案 Snowflake 存储过程是用 Ja
我是 SnowFlake 的新手。我在 Snowflake 中创建了一个表。以下是详细信息。 # Created @ 2020-01-07 21:11:20.810 -0800 CREATE TABL
我正在使用 Snowflake,我很惊讶它能够即时调整大小。这是一个非常10s video它如何立即调整大小,并且查询在下次运行时仍然是“热”的(注意我在查询中有一个CURRENT_TIMESTAMP
我是一名优秀的程序员,十分优秀!