推理模型对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.rhkb.cn/news/32319.html

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

    相关文章

    cesium安装与配置(visual studio版)

    文章目录 一、下载Cesium二、解压Cesium三、VS打开网站四、参考文献 如有错误,请指正!!! 一、下载Cesium 登录官网,下载Cesium。 点击箭头所指,下载Cesium 二、解压Cesium 解压Cesium压缩包得到以下文件…

    Netty基础—3.基础网络协议二

    大纲 1.网络基础的相关问题总结 2.七层模型和四层模型 3.物理层(网线 光缆 01电信号) 4.数据链路层(以太网协议 网卡mac地址) 5.网络层(IP协议 子网划分 路由器) 6.传输层(TCP和UDP协议 Socket 端口) 7.应用层(HTTP协议 SMTP协议) 8.浏览器请求一个域名会发生什…

    Linux:Ubuntu server 24.02 上搭建 ollama + dify

    一、安装Ubuntu 具体的安装过程可以参见此链接:链接:Ubuntu Server 20.04详细安装教程,这里主要记录一下过程中遇到的问题。 安装时subnet如何填写 在Ubuntu中subnet填写255.255.255.0是错误的,其格式为 xx.xx.xx.xx/yy &#…

    算法练习——双指针算法(更新中)

    一、介绍双指针算法 双指针(或称为双索引)算法是一种高效的算法技巧,常用于处理数组或链表等线性数据结构。它通过使用两个指针来遍历数据,从而减少时间复杂度,避免使用嵌套循环。双指针算法在解决诸如查找、排序、去重…

    stm32week6

    stm32学习 三.通信 5.硬件读取I2C 硬件读取I2C的代码(main.c与软件读取相同): #include "stm32f10x.h" // Device header #include "MPU6050_Reg.h"#define MPU6050_ADDRESS 0xD0 //MPU6050的I2C从机地址/*** 函 数&…

    qt+opengl 播放yuv视频

    一、实现效果 二、pro文件 Qt widgets opengl 三、主要代码 #include "glwidget.h"GLWidget::GLWidget(QWidget *parent) : QOpenGLWidget(parent) {connect(&m_timer, &QTimer::timeout, this,[&](){this->update();});m_timer.start(1000/33); }v…

    文本对抗样本系列的论文阅读笔记(整理合订)

    文本对抗样本系列的论文阅读笔记 以前调研文本对抗样本时的论文笔记梳理,论文都很经典,有现成的框架(TextAttack)可以直接用,论文中部分内容直接是截取自论文,所以存在中英混合笔记的情况。 BERT-Attack …

    相对与绝对路径的关系

    首先,我们一起来了解相对路径和绝对路径的概念: 相对路径:相对于当前工作目录的路径,不以 / 开头,以一个 ""、./、../、。例如:nginx、./nginx 或 ../nginx绝对路径:从根目录 / 开始…

    java项目之基于ssm的在线学习系统(源码+文档)

    项目简介 在线学习系统实现了以下功能: 该系统可以实现论坛管理,通知信息管理,学生管理,回答管理,教师管理,教案管理,公告信息管理,作业管理等功能。 💕💕作…

    位运算刷题+总结

    文章目录 判定字符是否唯一题解代码 丢失的数字题解代码 两整数之和题解代码 只出现一次的数字 II题解代码 消失的两个数字题解代码 总结 判定字符是否唯一 题目链接 题解 1. 哈希表,创建26个空间大小的哈希表 2. 位图,小写字符只有26个,…

    Qt表格美化笔记

    介绍 表格是一种常见的数据管理界面形式,在大批量的数据交互情形下使用的比较多 表格 可以通过样式表设置线条以及边框的颜色 QTableWidget { gridline-color : rgb(55, 60, 62); border: 1px solid rgb(62,112,181);}表头 如果表头和第一行的分割线显示&#…

    【Godot4.2】Vector2向量插值的应用

    求线段的等分点 extends Node2Dvar pos:Vector2 var split_num:int var p1 Vector2(200,200) var p2 Vector2(100,100)func _input(event: InputEvent) -> void:if event is InputEventMouseButton:if event.button_index MOUSE_BUTTON_WHEEL_DOWN:split_num clamp(spl…

    Git使用(二)--如何配置 GitHub 远程仓库及本地 Git 环境

    在日常的开发过程中,使用版本控制工具 Git 是一个非常重要的技能,特别是对于管理和协作开发。通过 GitHub,我们可以轻松地进行代码版本管理和共享。这篇博客将带您一步步学习如何配置 Git 环境并将本地仓库与 GitHub 远程仓库连接起来。 一、…

    【算法工具】HDL: 基于摘要统计数据的高维连锁不平衡分析软件

    ## 前言 在基因组研究中,连锁不平衡(Linkage Disequilibrium, LD)分析是理解遗传变异之间关联的关键步骤。然而,当面对高维数据时,传统分析方法往往面临巨大计算挑战。今天为大家介绍一款强大的工具——HDL (High-Dimensional Linkage diseq…

    MongoDB副本集部署完整教程

    一般而言,副本集主要成员有三个:主节点,副本节点,仲裁节点 按照官方推荐方案,我们搭建一个三成员的副本集,这个副本集由一个主结点和两个副本结点组成。 这里采用三台虚拟机进行部署:node1(主节…

    springcloud gateway通过数据库获取路由信息

    在 Spring Cloud Gateway 中结合 MyBatis 动态从数据库加载路由配置,可以实现灵活的路由管理。以下是详细实现步骤: 1. 数据库表设计 创建路由配置表 gateway_route: CREATE TABLE gateway_route (id varchar(50) NOT NULL COMMENT 路由唯一…

    蓝桥杯嵌入式组第十二届省赛题目解析+STM32G431RBT6实现源码

    文章目录 1.题目解析1.1 分而治之,藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 LED模块1.3.3 LCD模块1.3.4 TIM模块1.3.5 UART模块1.3.5.1 uart数据解析 2.源码3.第十二届题目 前言:STM32G431RBT6实现嵌入式组第十二届题目解析源码&#…

    Git 的基本概念和使用方式(附有思维导图)

    一、Git 简介 Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 在 2005 年为帮助管理 Linux 内核开发版本而开发 。与集中式版本控制系统(如 SVN)不同,在分布式系统中,每个开发者的本地机器都拥有一个完整的 G…

    【微服务】Nacos 配置动态刷新(简易版)(附配置)

    文章目录 1、实现方法2、配置依赖 yaml3、验证效果 1、实现方法 环境&#xff1a;Nacos、Java、SpringBoot等 主要是在boostrap.yaml中的data-id属性下配置refresh:true来实现动态更新 2、配置依赖 yaml 具体的版本参考官方的说明&#xff1a;官方版本说明 <!--读取boo…

    mac 被禁用docker ui后,如何使用lima虚拟机启动docker

    本机macos 安装lima brew install lima创建配置 echo "\\ndynamic:\n big-sur:\n image: docker://docker:git\n linux:\n image: docker.io/limasoftware/ubuntu:20.04 \\n" > ~/.lima/default.yaml启动名叫default的虚拟机 limactl start default进…