Page 296 - 《软件学报》2026年第1期
P. 296
何家豪 等: 智能查询优化算法研究综述 293
SIA 合成出的谓词可以让传统优化器正常下推从而减少查询过程中处理的数据量. SIA 会先利用 SMT 求解器生
成满足当前查询谓词的正例和不满足谓词的反例, 然后使用这些样本训练一个线性支持向量机模型, 该模型试图
区分满足和不满足原始查询谓词的数据集. 然后再将这个支持向量机模型还原成若干条谓词添加到查询结尾.
目前主流的 Web 应用后端一般都会使用 ORM 来对数据库进行操作, 而不是程序员直接将操作数据库的查
询模板写在代码里. 这样的方式对上层的程序员隐藏了底层的数据库操作, 对绝大多数开发人员带来了很大的便
利, 但同时也为数据库的查询改写任务提出了新的挑战, 即: 改写 ORM 产生的查询语句, 而非经过人类先行优化
过的查询语句. WeTune 是一种通过暴力穷举创造新查询改写规则的方法, 这种方法自动化地探索所有可能的逻
辑查询计划变换, 以发现以往可能被忽视的查询改写规则. WeTune 会首先枚举所有有效的逻辑查询计划, 然后尝
试发现在特定约束条件下等价但更高效的查询计划. 与 SIA 类似, WeTune 在鉴定可用性的过程中也采用了基于
SMT 求解器的验证方法.
同时, 有一些方法对规则的形式进行了创新. 现有规则库中的规则一般都采用正则表达式的方式编写, 然后通
过专门的正则表达式执行器执行改写, 对人类而言可读性较差. GenRewrite [102] 提出了一种叫作 NLR2 的改写规则,
它由自然语言编写, 大语言模型负责执行改写. GenRewrite 将自然语言改写规则作为其提示和知识转移的手段, 帮
助大语言模型提供更准确的改写建议, 还通过迭代修正自然语言改写规则的提示显著减少了改写查询中的语法和
语义错误.
以上 3 种方法都从创造新的查询改写规则角度推进了查询改写技术的发展, 但是它们也存在一定的弊端:
SIA 只能通过拟合谓词的方式来促进“选择下移”过程, 对于不需要拟合谓词或连接的数据量不大时的优化效果有
限, 同时对每一条查询都训练一个支持向量机的做法存在开销过高的隐患; WeTune 的应用场景主要专注于 Web
应用后端的查询场景, 此类查询的主要问题一般是由 ORM 程序在自动生成查询语句时产生的, 导致有许多冗余
的嵌套和操作符, 但是对于人类专家撰写的查询可能优化空间有限; GenRewrite 虽然优化效果突出, 但是其优化过
程中需要与大语言模型进行多次交互, 其时间开销与经济成本的限制导致 GenRewrite 几乎不可能作为在线算法
使用, 只能用于优化有限数量且反复使用的查询.
综上, 本节提到的各种查询改写方法的详细对比如表 5 所示.
表 5 查询改写方法对比
方法 适用范围 优化方式 语义等价 算法特点
LLM-R2 [97] 所有查询 应用已有规则 无需确保 提示大语言模型选择规则集合
LearnedRewrite [98] 所有查询 应用已有规则 无需确保 调整规则的运用顺序
R-Bot [99] 所有查询 应用已有规则 无需确保 迭代提示大语言模型使用规则
SIA [100] 有选择下移的查询 创造新规则 SMT求解器 SVM模型拟合新谓词
WeTune [101] ORM产生的查询 创造新规则 SMT求解器 穷举合理改写方案的对应规则
GenRewrite [102] 所有查询 创造新规则 质询大语言模型 提示大语言模型产生规则
6 总结与展望
6.1 本文内容总结
近年来, 智能技术开始广泛地应用于解决数据库领域的问题, 迸发出了一系列新兴的研究成果. 其中查询优化
作为数据库领域的重要研究方向, 也逐渐走上了智能化的道路. 本文首先介绍了在多种不同优化算法中都有使用
的代价模型, 随后按照优化目标的不同, 将智能查询优化算法分为了连接优化、计划生成和查询改写这 3 个研究
方向, 并对它们进行了系统地综述. 纵观这些方向可以发现, 目前将智能技术融入查询优化的方式基本上可以归纳
为以下两点: 一是通过改进评估候选计划的精确度来在已有的解空间内找到更优的计划; 二是通过改进解空间的
构造, 使其囊括更高的上限与包含更少的次优解, 以此来达到改进性能和降低开销的目的. 这些智能查询优化算法
既可以从历史经验中学习, 又能运用这些经验应对未来可能出现的未知任务, 将传统优化器从一个相对静态系统

