推理模型对SQL理解能力的评测:DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet

引言

随着大型语言模型(LLMs)在技术领域的应用日益广泛,评估这些模型在特定技术任务上的能力变得越来越重要。本研究聚焦于四款领先的推理模型——DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet在SQL理解与分析方面的能力,特别是它们判断SQL查询等价性的表现。

评测方法

我们设计了一个具有挑战性的测试案例[注1]:使用TPC-H基准测试中的一个原始SQL查询,以及通过专业SQL优化工具PawSQL重写后的查询版本。这两个查询在语法结构上有明显差异,但在语义上是等价的。我们要求四个模型分析这两个查询是否等价,并评估它们的推理过程和结论。

测试查询

原始SQL查询

select ps.ps_partkey, sum(ps.ps_supplycost * ps.ps_availqty) as value
from partsupp as ps, supplier, nation
where ps.ps_suppkey = supplier.s_suppkeyand supplier.s_nationkey = nation.n_nationkeyand nation.n_name = 'JAPAN'
group by ps.ps_partkey
having sum(ps.ps_supplycost * ps.ps_availqty)> (select sum(ps_supplycost * ps_availqty) * 0.0001from partsupp, supplier, nationwhere ps_partkey = ps.ps_partkeyand ps_suppkey = s_suppkeyand s_nationkey = n_nationkeyand n_name = 'JAPAN')
order by value desc

重写优化后的SQL查询:标量子查询解关联

select ps.ps_partkey, sum(ps.ps_supplycost * ps.ps_availqty) as value
from partsupp as ps, supplier, nation , (select ps_partkey, sum(ps_supplycost * ps_availqty) * 0.0001 as null_from partsupp, supplier, nationwhere ps_suppkey = s_suppkeyand s_nationkey = n_nationkeyand n_name = 'JAPAN'group by ps_partkey) as SQ
where ps.ps_suppkey = s_suppkeyand s_nationkey = n_nationkeyand n_name = 'JAPAN'and SQ.ps_partkey = ps.ps_partkey
group by ps.ps_partkey
having sum(ps.ps_supplycost * ps.ps_availqty) > sum(SQ.null_)
order by value desc

模型分析结果

DeepSeek r1(推理用时59秒)

DeepSeek r1推理用时约59秒,正确判断两个查询在逻辑上等价的。

图片

它的分析重点包括:

  1. 查询逻辑对比:区分了第一个查询使用关联子查询与第二个查询使用内联视图预计算的不同实现方式。

  2. 等价性验证:详细分析了子查询作用域、计算值一致性和过滤条件,指出第二个查询中的sum(SQ.null_)实际上等价于直接取SQ.null_,因为每个ps_partkeySQ中唯一。

  3. 性能差异:识别出第二个查询通过预计算和连接优化避免了多次扫描,执行效率可能更高。PawSQL的优化结果也确实证明整体性能从192秒降低到0.065s,性能提升超过1000倍[1]。

    GPT-4o(推理时间26秒)

    GPT-4o推理用时26秒,同样得出了两个查询等价的正确结论。

    图片

    它的分析主要关注:

    1. 子查询的写法差异:识别出第一个SQL使用相关子查询,而第二个SQL将计算逻辑放到内联子查询中。

    2. 执行方式差异:指出尽管执行计划有所不同,但两个查询的语义和最终结果相同。

    GPT-4o的分析简洁明了,直接抓住了查询优化的本质:通过提前计算派生表的聚合值以提高性能,同时保持结果一致性。

    Kimi k1.5(用时1分钟8秒)

    Kimi k1.5推理用时1分钟8秒,而且错误地认为两个查询不完全等价。

    图片

    其重点分析包括:

    1. 子查询位置和逻辑:认为两个查询在子查询位置和处理逻辑上存在差异。

    2. 分组和筛选逻辑:误解了第一个查询是全局计算一个单一阈值,而第二个查询按ps_partkey分组计算独立阈值。

    3. 结果差异:基于上述误解,得出两个查询可能返回不同结果的错误结论。

    Kimi的分析反映出它在理解SQL查询语义,特别是子查询与主查询关系方面的局限性。

    Claude 3.7 Sonnet

    Claude 3.7 Sonnet也得出了查询不等价的错误结论。

    图片

    它的分析关注点包括:

    1. 子查询处理方式:正确识别出两个查询在子查询实现上的差异。

    2. HAVING子句条件比较:误认为第二个查询中的sum(SQ.null_)会对派生表结果再次聚合,改变比较语义。

    3. 修改建议:提出将第二个查询的HAVING条件修改为直接使用SQ.null_而非sum(SQ.null_)

    Claude的分析显示了对SQL聚合函数在不同上下文中行为理解的不足。

    评测结论

    1. DeepSeek r1和GPT-4o展示了较强的SQL语义理解能力,不仅给出了正确结论,还能准确解释优化过程中的语义保持。

    2. Kimi k1.5和Claude 3.7 Sonnet在处理复杂SQL转换和子查询优化时存在明显局限,尤其是在理解聚合函数与JOIN操作的交互方面有待提高。

    3. 模型表现差异可能反映了训练数据中SQL相关内容的质量和数量差异,以及模型对数据库查询执行机制的理解深度不同。

    启示

    尽管大型语言模型在SQL理解和分析方面取得了显著进展,本研究结果也凸显了专业SQL优化工具(如PawSQL)在实际数据库优化工作中的不可替代性。

    1. 优化精确性与可靠性:专业工具基于数据库理论和实践,确保查询转换的语义等价性,而LLMs在复杂SQL查询的理解上仍存在不确定性。

    2. 性能优化的系统性与全面性:专业工具可以基于数据库引擎特性和统计信息进行优化,考虑索引使用、连接顺序、谓词下推等多维度优化,生成可预测的、一致的优化结果。

    3. 生产环境中的稳定性与可控性:在生产环境中,SQL查询优化需要考虑优化的可预测性和一致性、与现有应用系统的兼容性以及对边缘情况的稳健处理。专业工具在这些方面提供了更高的可靠性和可控性。

    4. 工具协同: 构建LLMs与专业SQL优化工具协同工作的方法,可能是提高数据库优化效率和可靠性的有效途径。

    总结

    通过SQL等价性分析任务,揭示了当前顶级推理模型在处理专业技术领域问题时的能力差异。尽管部分模型展现了对SQL语义理解的能力,但专业SQL优化工具在实际生产环境中的价值仍不可替代。随着技术发展,LLMs与专业工具的结合使用可能成为未来数据库优化的最佳实践。

    [*注1] 本文使用的优化案例:

    https://www.pawsql.com/statement/1897947325217640449

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71990.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    IDEA接入阿里云百炼中免费的通义千问[2025版]

    安装deepseek 上一篇文章IDEA安装deepseek最新教程2025中说明了怎么用idea安装codeGPT插件,并接入DeepSeek,无奈接入的官方api已经不能使用了,所以我们尝试从其他地方接入 阿里云百炼https://bailian.console.aliyun.com/ 阿里云百炼‌是阿…

    实施一套先进的智能摄像头服务系统。

    一、项目背景 随着物联网、人工智能和大数据技术的飞速发展,智能摄像头已成为家庭、企业以及公共安全领域的重要设备。其便捷、高效、智能的特点,使得市场需求日益增长。为了满足用户对智能监控的多样化需求,提供更加全面、可靠的监控服务&a…

    linux自启动服务

    在Linux环境中,systemd是一个系统和服务管理器,它为每个服务使用.service文件进行配置。systemctl是用于控制系统服务的主要工具。本文将详细介绍如何使用systemctl来管理vsftpd服务,以及如何设置服务自启动。 使用Systemd设置自启动服务 创…

    010-Catch2

    Catch2 一、框架简介 Catch2 是一个基于 C 的现代化单元测试框架,支持 TDD(测试驱动开发)和 BDD(行为驱动开发)模式。其核心优势在于: 单头文件设计:v2.x 版本仅需包含 catch.hpp 即可使用自然…

    数字人分身开发指南:从概念到实战

    一、什么是数字人分身? 想象一下,在电脑或手机屏幕里,一个能跟你聊天、回答问题,甚至还能做表情的虚拟角色。这就是数字人分身,它用上了人工智能技术,让机器也能像人一样交流。无论是在线客服、网络主播还…

    Pixelmator Pro for Mac 专业图像处理软件【媲美PS的修图】

    介绍 Pixelmator Pro,是一款非常强大、美观且易于使用的图像编辑器,专为 Mac 设计。采用单窗口界面、基于机器学习的智能图像编辑、自动水平检测,智能快速选择及更好的修复工具等功能优点。许多非破坏性的专业编辑工具可让您进行最佳的照片处…

    LiveGBS流媒体平台GB/T28181常见问题-视频流安全控制HTTP接口鉴权勾选流地址鉴权后401Unauthorized如何播放调用接口流地址校验

    LiveGBS流媒体平台GB/T28181常见问题频流安全控制HTTP接口鉴权勾选流地址鉴权后401Unauthorized如何播放调用接口流地址校验? 1、安全控制1.1、HTTP接口鉴权1.2、流地址鉴权 2、401 Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.…

    C++设计模式-抽象工厂模式:从原理、适用场景、使用方法,常见问题和解决方案深度解析

    一、模式基本概念 1.1 定义与核心思想 抽象工厂模式(Abstract Factory Pattern)是创建型设计模式的集大成者,它通过提供统一的接口来创建多个相互关联或依赖的对象族,而无需指定具体类。其核心思想体现在两个维度: …

    【prompt实战】知乎问题解答专家

    本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权&am…

    数据结构第八节:红黑树(初阶)

    【本节要点】 红黑树概念红黑树性质红黑树结点定义红黑树结构红黑树插入操作的分析 一、红黑树的概念与性质 1.1 红黑树的概念 红黑树 ,是一种 二叉搜索树 ,但 在每个结点上增加一个存储位表示结点的颜色,可以是 Red和 Black 。 通过对 任何…

    Spring Boot3.3.X整合Mybatis-Plus

    前提说明: 项目的springboot版本为:3.3.2 需要整合的mybatis-plus版本:3.5.7 废话不多说,开始造吧 1.准备好数据库和表 2.配置全局文件application.properties或者是application.yml(配置mapper的映射文件路径&am…

    可视化图解算法:链表指定区间反转

    1. 题目 描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例1 输入&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输…

    ✨SQL-递归CTE

    &#x1f4d6; SQL魔法课堂&#xff1a;CTE「时间折叠术」全解 &#x1f3a9; 第一章&#xff1a;什么是CTE&#xff1f; CTE&#xff08;Common Table Expression&#xff09; 就像 SQL 里的「临时笔记本」&#x1f4d2;&#xff1a; WITH 临时笔记本 AS ( SELECT ... FRO…

    Cursor 新手入门使用教程

    一、Cursor 是什么&#xff1f; Cursor 是一个集成了 GPT-4、Claude 3.5 等先进 LLM&#xff08;大语言模型&#xff09;的类 VSCode 编译器&#xff0c;可以理解为在 VSCode 中集成了 AI 辅助编程助手。从界面布局来看&#xff0c;Cursor 与 VSCode 基本一致&#xff0c;且使…

    如何在Spring Boot中配置和使用MyBatis-Plus

    在当今的Java开发中&#xff0c;Spring Boot已经成为了一个非常流行的框架&#xff0c;而MyBatis-Plus则是一个强大的ORM框架&#xff0c;为开发人员提供了更简便的数据库操作方式。很多开发者都在使用Spring Boot和MyBatis-Plus的组合来快速构建高效的应用。今天就来聊聊如何在…

    【贪心算法3】

    力扣1005.k次取反后最大化的数组和 链接: link 思路 既然要求最大和&#xff0c;那么不妨先给数组排个序&#xff0c;如果有负数&#xff0c;先处理负数从前往后给数组取反&#xff0c;如果负数处理完后k还有次数&#xff0c;此时数组全是正数了&#xff0c;只需要对第一个元…

    自然语言处理中的语音识别技术:从声波到语义的智能解码

    引言 语音识别&#xff08;Automatic Speech Recognition, ASR&#xff09;是自然语言处理&#xff08;NLP&#xff09;的关键分支&#xff0c;旨在将人类语音信号转化为可处理的文本信息。随着深度学习技术的突破&#xff0c;语音识别已从实验室走向日常生活&#xff0c;赋能…

    1688店铺所有商品数据接口详解

    ​​一、接口概述淘宝开放平台提供 1688.items.onsale.get/taobao.item_search_shop 接口&#xff0c;可批量获取店铺在售商品列表&#xff0c;包含商品 ID、标题、价格、销量、图片等核心信息。该接口适用于商品库管理、竞品监控、数据分析等场景 ​二、接口调用流程 前期准…

    ArduPilot开源代码之AP_OSD

    ArduPilot开源代码之AP_OSD 1. 源由2. 简介3. 补丁4. 框架设计4.1 启动代码 (AP_OSD::init)4.2 任务代码 (AP_OSD::osd_thread)4.3 实例初始化 (AP_OSD::init_backend) 5. 重要例程5.1 AP_OSD::update_stats5.2 AP_OSD::update_current_screen5.3 AP_OSD::update_osd 6. 总结7.…

    qt open3dAlpha重建

    qt open3dAlpha重建 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionAlpha_triggered();//alpha重建 void MainWindow::