摘要:本月,PawSQL 带来了一系列贴近用户实际场景的更新。MySQL 存储过程现在也能被完整解析和审核了;分析型查询中的派生表会自动优化为 Lateral Join,减少不必要的中间结果物化;复杂嵌套子查询的重写效果也得到显著提升。此外,审核规则的严重级别现在可以由前端灵活配置,适配不同团队的管控需求。
一句话了解PawSQL: PawSQL 是 AI 驱动的企业级智能 SQL 审核优化平台,全球个人用户超 2 万。核心能力包括:40+ 种查询重写算法、基于代价模型的智能索引推荐、内置 300 + 规则集保障 SQL 合规安全、覆盖开发到运维全生命周期治理并支持 CI/CD 集成、兼容 MySQL、Oracle、openGauss、TDSQL 等 20 余种数据库,高效管控 SQL 质量与性能。
如果您所在团队使用 MySQL 存储过程、函数或触发器,本月这项更新会让您直接受益——PawSQL 现已完整支持MySQL 存储过程语言(PL)的解析。
以往,存储过程内部的 SQL 语句对审核工具来说如同"黑盒",无法分析其中的查询和操作是否合规。现在,PawSQL 能够深入 PL 代码内部,完整解析存储过程、函数、触发器、事件中的每一条 SQL,为存储过程级别的 SQL 审核和优化铺平了道路。
这项能力覆盖了各种主流 PL 语法结构:IF/CASE 条件分支、LOOP/WHILE/REPEAT 循环控制、SIGNAL/RESIGNAL 异常处理,以及块标签、GET DIAGNOSTICS 错误诊断等进阶特性。10 个专项测试脚本全部通过验证。
对您的价值:如果您的业务中大量使用 MySQL 存储过程,现在可以将其纳入 SQL 审核流程,不再留盲区。
分析型 SQL 中经常出现多层嵌套的派生表(子查询),每层派生表都会产生一次中间结果物化,拖慢查询响应。本月新增的DerivedTable → Lateral Join 自动重写优化,能帮您省去手动改写的麻烦。
PawSQL 现在可以智能识别三种派生表场景并自动转换:
-- 优化前:派生表全量物化后再过滤,数据量大时性能堪忧
SELECT FROM (
SELECT d.dept_id, COUNT() AS cnt
FROM dept d JOIN emp e ON d.dept_id = e.dept_id
GROUP BY d.dept_id
) t WHERE t.cnt > 5;
-- 优化后:转为 Lateral Join,避免中间结果物化,直接过滤
SELECT d.dept_id, COUNT() AS cnt
FROM dept d JOIN emp e ON d.dept_id = e.dept_id
GROUP BY d.dept_id
HAVING COUNT() > 5;对您的价值:分析型查询中的派生表嵌套越深,优化收益越明显。无需手动改写 SQL,PawSQL 自动完成。
不同团队对同一条审核规则的容忍度可能完全不同——有的团队将"缺少注释"视为 Error,有的只当作 Info。本月,PawSQL 完成了解析阶段审核规则的严重级别前端配置化改造。
现在,您可以在前端界面上为每条解析阶段的规则指定严重级别(Error / Warning / Info),无需修改后端配置或代码。
当查询中嵌套了多层子查询时,重写的顺序直接影响最终优化效果。本月,PawSQL 对QueryFoldingRewrite的重写策略进行了重要调整——重写顺序从"外层→内层"改为"内层→外层"。
这个改动意味着:最内层的子查询先被折叠优化,逐层向外推进。每一层都在下层已经完成优化的基础上进行,避免了之前外层先重写、内层变化后又得回头重写的低效循环。
对您的价值:如果您经常编写多层嵌套的复杂查询,现在会得到更准确、更高效的优化结果。
本月进行了两轮 ANTLR Grammar 规则顺序优化,目的很明确:让高频匹配的规则优先命中,减少解析器的回溯尝试。
selectElement 规则:选择列是查询中出现频率最高的语法结构,将其规则前置,MySQL 及 3 种方言的解析性能均有提升
表达式/谓词语法:调整了解析优先级,减少 ANTLR 的"尝试—失败—回溯"路径,MySQL、PostgreSQL、PLSQL、TSQL 四方言同时受益
此外,Universal SQL Parser 的 语法文件也进行了系统性精简,消除了歧义分支、统一了方言间的结构差异,Parser 代码净减 102 行。
对您的价值:包含大量表达式和嵌套子查询的复杂 SQL,解析响应更快,审核和优化的等待时间更短。
新增pawsql.exclusive = true配置开关。在多线程高并发场景下,启用隔离模式可以避免 ANTLR 全局变量状态的竞态冲突,解析器的并发稳定性显著提升。
对您的价值:如果您的审核服务承载着较高的并发压力,开启此选项可以让解析过程更加稳定可靠。
修复了EXTRACT(YEAR FROM date_col)这类函数调用在嵌套于复杂表达式时,解析器未能正确识别时间单位字段的问题。SQL 指纹工具也同步做了加固。
修复了一个"安静"的正确性问题:当同一个 CTE 在查询中被多次引用时,PawSQL 不再将主查询的过滤谓词下推到 CTE 内部。原因是——如果 CTE 被多处引用,谓词下推可能导致不同引用点获取不同的结果集,破坏语义等价性。
对您的价值:使用了多次引用 CTE 的查询,现在可以确保结果的正确性。
NoCondition4JoinWarning规则此前会将没有关联条件的 Lateral Join 误报为 Cartesian Join。本月已修复。Lateral Join 按行驱动的语义决定了它可以没有关联条件,不应触发告警。
PawSQL 是一款专业的企业级 SQL 质量管理和优化平台,提供 SQL 审核、优化、索引推荐、慢查询分析等全方位功能。支持 MySQL、PostgreSQL、Oracle、SQL Server 等主流数据库,以及 TDSQL、GaussDB 等国产数据库。为开发者和企业提供一站式的全生命周期 SQL 质量审核和优化解决方案。
