- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含多个 ctes 的雪花查询,并使用 Talend 作业插入表中。执行查询需要超过 90 分钟。它是多个级联的ctes,一个调用另一个,另一个调用另一个。
我想提高查询的性能。大概有1000行代码,我无法将其粘贴到这里。当我检查配置文件时,它显示了所有窗口函数和聚合函数,这会减慢查询速度。
例如,顶部较慢的是,
ROW_NUMBER() OVER (PARTITION BY LOWER(S.SUBSCRIPTIONID)
ORDER BY S.ISROWCURRENT DESC NULLS FIRST,
TO_NUMBER(S.STARTDATE) DESC NULLS FIRST,
IFF(S.ENDDATE IS NULL, '29991231', S.ENDDATE) DESC NULLS FIRST)
占用 7.3% 的时间。您能建议一种替代方法来提高查询性能吗?
最佳答案
问题是 1000 行对于任何查询分析器来说都很难优化。对于您和继承该代码的 future 团队成员来说,这也会使故障排除变得更加困难。
我建议分解查询并进行这些优化:
CREATE TEMPORARY TABLE AS
代替CTE。在您要连接或筛选的列上创建表时添加 ORDER BY
。临时表对于优化器来说更容易构建和以后使用。 ORDER BY
帮助 Snowflake 了解后续与其他表的联接要优化哪些内容。它们也更容易排除故障。TO_NUMBER(S.STARTDATE)
和 IFF(S.ENDDATE IS NULL,'29991231',S.ENDDATE)
。IDENTITY
、SEQUENCE
或填充 INTEGER
> 可以用作排序键的列。您还可以按字面意思命名这个新列 sortKey。对整数进行排序比在 DATETIME
上运行函数然后按它排序要快得多。注释:
创建或替换临时表 table1 作为 select * from Dual;
之后,您将引用 table1 而不是代码而不是 CTE。create Materialized View mymv as select col1, col2 from mytable;
关于snowflake-cloud-data-platform - 雪花查询性能调优,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60101570/
像 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
我是一名优秀的程序员,十分优秀!