Snowflake跨查询反馈:19个连接查询从近两小时缩至30秒

资讯 AI 行业观察 作者:Sangyong Hwang 全文 5462 字 · 约 14 分钟读完 配图 7 张 分类医疗 AI智能体

2026 年,智能体将在企业级应用中取得哪些实质性突破?点击下载《2026 年 AI 与数据发展预测》白皮书,获悉专家一手前瞻,抢先拥抱新的工作方式! Optima Planning:关于查询,还可以多问一个问题 在美国一家大型医疗健康科技公司的生产工作负载中,跨查询反馈将一条包含 19 个连接操作的分析查询的执行时间

所属频道 智能体与 Agent行业落地

2026 年,智能体在企业级应用里会迎来哪些实质性突破?《2026 年 AI 与数据发展预测》白皮书已经可以下载,里面是专家的一手前瞻,想抢先接触新的工作方式可以去看看。

Optima Planning:围绕查询,还能多问一个问题

美国一家大型医疗健康科技公司的生产工作负载里,跨查询反馈把一条含 19 个连接操作的分析查询,执行时间从近两小时压到了 30 秒。怎么做到的?

此前,Optima Planning 只回答一个关于完整查询的问题:这条查询或它的某种变体,以前跑过没有?这一机制我们在上一篇博客《通过 Snowflake Optima Planning 提升重复查询性能》里讲过。现在它还能回答另一个互补的问题,盯的是查询内部的某个计划片段或单独的操作算子。

针对单条查询的反馈,回答的是一个要紧的问题:

这条查询,或者它的某种变体,之前是否执行过?

而匹配计划片段或单个操作算子,回答的是另一个互补的问题。它不看整条查询,只看查询计划中的某一部分:

这个计划片段,或者某个特定的操作算子(比如连接操作),是否曾经出现在其他已执行的查询中?

两套机制合在一起,Optima Planning 能学习的查询范围就变大了:既覆盖相同查询,也覆盖结构模式重复、但并不完全相同的查询。

工作原理

现在,Optima Planning 的匹配粒度已经细到完整查询以下,可以匹配查询内部的计划片段(比如共享视图中的连接树),也可以匹配单个操作算子(比如某个特定的连接操作)。

整体流程是这样走的:

  1. 查询编译完成后,Optima Planning 会给查询计划里的每个计划片段和单个操作算子(比如某个特定的连接操作)算一个哈希值。哈希值取自优化器为这部分计划生成的输出,而不是整条查询的 SQL 文本。

  2. 如果后面另一条查询里含有相同哈希值的片段或操作算子,哪怕查询其余部分完全不同,比如新加了一张此前从未参与连接的表,Optima Planning 照样能认出其中的共同部分。

  3. 第一次查询执行产生的反馈,会被拿去优化第二次查询中对应的片段或操作算子。这样一来,第二条查询即便从未完整执行过,优化器也能借助该部分已有的实际执行数据来选计划,不用从零开始。

靠计划片段或单个操作算子来匹配,能找到不同查询计划之间的共同部分。但匹配成功只说明反馈信息有复用的可能,不代表一定会被采用。

Optima Planning 还会做一层智能判断:把已有的执行反馈用到新查询上,会不会造成过度泛化,也就是某些在原有上下文里成立的执行经验,换到新上下文里可能就不适用了。一旦判断反馈迁移的范围过大,这些反馈就不会被应用。

关键点在于,匹配依据是 Snowflake 优化器生成的查询计划中的片段或操作算子,而非整条查询的 SQL 文本。

这套机制并不取代针对单条查询的反馈机制。后者已经能处理同一查询的不同变体,跨查询匹配补的是它还没覆盖的场景:一条查询虽然和之前执行过的查询不同,却包含曾在其他查询中执行过的计划片段或操作算子。

两种机制的衔接很清楚:查询内部匹配在全新查询首次执行时就能起作用。同一查询第二次执行时,它就有了自己的查询身份,和其他重复执行的查询一样,后续优化交给针对单条查询的反馈机制。

Snowflake 的优化器走的是基于成本的优化路线:估算每个操作算子的输出行数,再挑预计执行成本最低的查询计划。估算一旦出现偏差,优化器可能选错连接顺序或构建侧,有时还会引发连锁反应,产生数十亿行不必要的中间结果。这个问题我们在《提升重复查询性能》和《基于真实数据优化查询计划》里介绍得更深入。

跨查询学习适用于哪些场景

为现有视图添加新的连接操作

SELECT * FROM v_customer_orders v JOIN returns r ON v.order_id = r.order_id WHERE ...  
复制代码

查询是分析人员在工作负载里常用视图的基础上搭出来的,只多加了一个连接操作,这种组合此前没人跑过。拼出来的查询虽然全新、查询身份也是新的,但v_customer_orders内部的连接片段早已存在,并非第一次执行。

新报表里常出现的连接方式,可以直接沿用已有经验

SELECT c.region, COUNT(*) FROM customers c JOIN orders o ON o.customer_id = c.customer_idWHERE o.status = 'RETURNED' GROUP BY c.region  -- this exact report is new
复制代码

这张报表此前没跑过,里面的列表和分组方式都是新的。可它用到的客户表与订单表连接并不新鲜——别的报表早就用过同样的连接,执行反馈已经攒下了。SELECT

逻辑一致、SQL 写法却不同的查询

FROM orders o JOIN customers c ON c.customer_id = o.customer_id   FROM customers c JOIN orders o ON o.customer_id = c.customer_id   
复制代码

两个 BI 工具做出来的连接操作可能一模一样,只是表在 SQL 里出现的先后顺序相反。眼下这类 SQL 还会被当成两条不同的查询。但计划片段和单个操作算子的匹配,看的是查询计划里的算子,不是 SQL 文本FROM中子句的表排列顺序。所以这两条查询照样能共用这段连接操作的反馈信息。

上面说的几种情况,查询内部匹配都能把针对共同计划片段或操作算子攒下的反馈信息拿来复用。

用一个模拟例子来说明

还是拿上一篇博客里的餐厅例子接着讲:restaurants、menu_items、sourcing_records 和 suppliers一共四张表,靠restaurant_id、ingredient_category 和 supplier_id 进行连接。

前文提过,高评分餐厅往往只用少数几种高端食材,这些食材多出自手工生产型供应商,工业化供应商则很少涉足。这层关联分散在三张表里,只看单表统计信息根本看不出来。

下面这条查询,我们叫它查询 A:

SELECT COUNT(*)FROM   restaurants      rJOIN   menu_items       mi ON r.restaurant_id = mi.restaurant_idJOIN   sourcing_records sr ON mi.ingredient_category = sr.ingredient_categoryJOIN   suppliers        s  ON sr.supplier_id = s.supplier_idWHERE  r.guide_rating >= 1  AND  s.supply_chain_type = 'industrial';
复制代码

第一次跑的时候,优化器并不知道这些数据之间的关联,连接操作因此堆出大量中间结果——在过滤条件把结果集压到几乎为空之前,已经生成了数千万行数据。

再跑一次,Optima Planning 用这条查询上一次执行留下的数据,给出了更好的查询计划:

Snowflake跨查询反馈:19个连接查询从近两小时缩至30秒(配图 1)

可要是碰到一条相似、又不完全一样的查询呢?

来看查询 B。它的表连接关系和连接列与查询 A 相同,但输出列不一样,评分筛选阈值也换了,还多了一个排序操作:

SELECT r.restaurant_id, mi.menu_item_id, s.supplier_nameFROM   restaurants      rJOIN   menu_items       mi ON r.restaurant_id = mi.restaurant_idJOIN   sourcing_records sr ON mi.ingredient_category = sr.ingredient_categoryJOIN   suppliers        s  ON sr.supplier_id = s.supplier_idWHERE  r.guide_rating = 1  AND  s.supply_chain_type = 'industrial'ORDER BY r.restaurant_id, mi.menu_item_id;
复制代码

这条查询优化器之前没见过一模一样的,生成高质量查询计划时就卡住了,情况和第一次执行查询 A 时一样。

结果,连接操作产生了大量中间结果,整条查询跑了约 13 秒。

Snowflake跨查询反馈:19个连接查询从近两小时缩至30秒(配图 2)

有了这项新功能,查询 A 里的基数估算信息可以搬到查询 B 上用。

也就是说,查询 B 虽然是第一次执行的全新查询,优化器也能直接给出改进后的查询计划。

换上新计划后,查询执行时间降到约半秒:

Snowflake跨查询反馈:19个连接查询从近两小时缩至30秒(配图 3)

对一条此前从未执行、也没有自身历史执行记录可参考的查询来说,这相当于约 26 倍的性能提升。

一个真实生产案例

下面这个查询案例来自美国一家大型医疗健康科技公司,是真实生产环境里的,能看出该功能的实际效果。

该客户执行了一条分析查询,里面包含 19 个连接操作和多个相互关联的连接谓词。这种复杂结构,传统的基数估算方法往往应付不来。

优化器给出的查询计划不够好,连接操作产生了数十亿行中间结果,查询最终耗时接近两小时。

Snowflake跨查询反馈:19个连接查询从近两小时缩至30秒(配图 4)

后来的一次执行中,优化器用上了另一条结构相似但并不相同的查询提供的跨查询反馈,基数估算结果得到改善,执行计划也更优。

最终,查询执行时间只有 30 秒!

Snowflake跨查询反馈:19个连接查询从近两小时缩至30秒(配图 5)

这个案例说明了跨查询反馈真正的突破之处:一条查询即使没有自己的历史执行记录,也能从其他查询的执行经验里获益。

只要它用的连接结构在工作负载的其他查询里出现过,Optima Planning 就能马上借用这些经验,哪怕这条查询是首次执行。

哪些情况下能够发挥作用

当一条真正全新的查询,与此前执行过的查询共享某个计划片段或单个操作算子时,这项能力价值最大。

Optima Planning 在查询内部做匹配,把反馈机制扩展到了不同查询之间。

尤其适用于以下情况:

  • 这类查询的执行成本不低,执行计划一旦选错,就可能引发大范围扫描或连接操作;

  • 还有一类查询本身是新的,比如新增了连接、表或组合,但它是在已有视图、CTE(公用表表达式)或工作负载里其他查询用过的常见连接模式上做扩展;

  • 分析人员写的临时查询,沿用了多份报表中反复出现的连接模式,哪怕这份具体报表以前从没跑过;

  • SQL 完全由 BI 工具或大语言模型(LLM)生成,Cortex Analyst、Tableau Pulse 就属于这种情况;

  • 两个 BI 工具或 ORM(对象关系映射工具)用不同的连接顺序写出了相同的连接操作。眼下这些 SQL 仍被当作不同的查询。

面对这些场景,匹配计划片段或单个操作算子,比匹配整个查询能明显扩大查询计划优化的覆盖面。

客户怎样查看 Optima 的优化效果

在查询历史记录(Query History)的查询性能分析(Query Profile)里,客户可以通过查询洞察(Query insights)面板、统计信息(Statistics)面板,以及QUERY_INSIGHTS视图来监控 Snowflake Optima 的使用情况。完整机制的介绍见《基于真实数据优化查询计划》。

具体到 Optima Planning,客户能看到 Snowflake 在何时应用了优化洞察来改善查询计划质量。这种新匹配方式目前与其他反馈机制共用同一条客户可见提示:“This query benefits from Snowflake optima planning.”现阶段系统还没有单独的提示,用来区分反馈是来自计划片段或操作算子匹配,还是来自同一查询匹配。两种情形在 Query Profile 和QUERY_INSIGHTS中的呈现方式一模一样。

Snowflake跨查询反馈:19个连接查询从近两小时缩至30秒(配图 6)

核心要点

Optima Planning 的关键在于:用更可靠的执行数据,产出更优的查询计划。

现在,单条查询反馈加上跨查询反馈,已经能覆盖工作负载生命周期里的更多情形:

  • 重复执行的工作负载:对仪表板、定时报表和 ELT 数据流水线,Optima Planning 能从历史执行中学会哪些连接操作会产生大量中间结果,从而持续提升查询性能;

  • 基于已有查询结构扩展的新查询:新查询在现有视图、CTE 或其他查询用过的常见连接模式上增加连接操作时,即便首次执行,也能借助已有计划片段的反馈;

  • 生产环境里的实际效果:在真实生产工作负载中,跨查询反馈把一条含 19 个连接操作的分析查询,执行时间从近两小时压缩到 30 秒。

不用手动调优,也不用手动配置,就能拿到更好的查询计划。

Snowflake跨查询反馈:19个连接查询从近两小时缩至30秒(配图 7)
本文由本站编辑组整理与排版,内容基于公开信息核实后归纳发布,与文中提及的产品、公司无隶属关系。我们持续跟踪 AI 领域的模型、产品与行业动态,力求信息准确、表述清晰;文中涉及的名称、价格与功能细节可能随官方调整而变化,请以官方最新说明为准。如发现疏漏或表述有误,欢迎通过站内渠道反馈指正。

相关推荐 按相关度与热度排序

全部资讯 →
  1. Agent改写AI算力采购清单:服务器CPU需求2026年预计增长31%

    (本文作者为 硅碳变量,钛媒体经授权发布)文|硅碳变量,作者|沈浪根据TrendForce集邦咨询最新AI服务器产业研究,随着各AI服务厂商积极推出AI Agent 相关应用,服务器CPU需求自2025年下半年起稳步成长,预估2026年出货年增幅将达 31%。2027年由于AI推理需求持续成长、Agentic AI服务

    来源 腾讯网
  2. Meta Muse下载破1040万次,中国版个人Agent还有多远?

    文 | 李炤锋 编辑 | 张雨忻 1040万次,这是Meta的AI个人助理Muse上线不足两个月的累计下载量,由此,国内快速掀起了一轮Personal Agent产品热潮——谁能做出一个“中国版Muse”,成为了全行业都在关注的话题。 一批创业团队正在加速入场。去年离开字节的原豆包PC端产品负责人齐俊元,今年再次创业,

    来源 腾讯网
  3. 埃森哲承包商私接Claude Code:五角大楼AI代跑两月才被发现

    北京时间 10 月 30 日,据美国《连线》杂志报道,埃森哲一名承包商员工被指将个人 Claude Code 账号接入美国国防部的安全系统,让 AI 智能体代为编写和部署代码。知情人士称,该智能体在国防部网络中运行了两个月才被发现,其间疑似将登录凭据、密码及网络结构信息发送至一个存在安全风险的第三方网站。 埃森哲否认相

    来源 AI 行业观察
  4. AI智能体自主选药注射活鼠大脑:实验室角色之变引争议

    一家生物科技初创公司让AI智能体自主选择基因疗法,并成功将其注射到活体小鼠大脑中。这一实验展示了AI在科研实验室中从辅助工具向自主执行者的转变,也引发了关于安全性、伦理和科研范式的深层讨论。

    来源 AI 科技快讯
  5. OpenAI调整订阅额度:12月起ChatGPT与Codex共用配额

    10月31日,OpenAI公告称,自12月起,ChatGPT Plus、Pro、Business套餐的使用额度将在ChatGPT与Codex之间共享。OpenAI正在把Work的智能体能力整合至ChatGPT主交互界面。用量以Token统计,消耗额度取决于模型与任务复杂度,复杂任务消耗更高;即时对话(Instant c

    来源 腾讯网
  6. 智气库何建人:54年经验转数字资产,气源节能可分成

    智气库是聚焦矿山压缩空气赛道的垂直物理 AI 项目,由拥有 54 年空压机行业从业经验、30 年实业创业经历的何建人发起。项目避开通用大模型参数竞赛赛道,扎根矿山井下碎片化工业场景,打造矿业压缩空气气源智能体矩阵搭配 FDE/OPC 属地交付生态,将空压机行业长期沉淀的隐性经验数字化,落地可审计、可分成的气源节能服务。

    来源 AI 行业观察
  7. 蔡磊谈脑机接口心愿:想再抱一次儿子,称值得押上一切

    【TechWeb】10月31日,在2026年bilibili超级科学晚对谈环节,京东集团原副总裁、渐冻症抗争者蔡磊通过视频,分享了一个心愿:如果未来丧失语言和肢体功能,他希望通过脑机接口实现与家人的交流,甚至再次拥抱儿子。 他畅想,未来脑机接口与具身智能结合,患者或可用大脑控制机器人分身,让全身无法动弹的父亲借助机械躯

    来源 AI 行业观察
  8. Claude Code封禁游戏克隆:Opus 5.5 打开的口子能关上吗

    最近几天,X上有一条推文火了。 一个叫chasm的博主发现,Claude Code好像正在悄悄打击游戏克隆,不许用它来复刻其他游戏。 很快,Anthropic官方也确认了。技术人员说,他们在Opus 5.5模型的系统提示词里加了两句话,引导Claude不要去“重新创建一个属于别人的特定游戏”。 这太符合Anthropi

    来源 AI 行业观察
向下滚动自动加载更多