智能SQL审核优化工具 PawSQL 月度更新 | 正确性优先、兼容性与可观测性加强
一句话总结:以「正确性优先」,显著降低误报、提升对 DB2 / MSSQL / 非标准文本的兼容性,并在重写与谓词下推上做了多处鲁棒性改进。
以「正确性优先」,显著降低误报、提升对 DB2 / MSSQL / 非标准文本的兼容性,并在重写与谓词下推上做了多处鲁棒性改进。
核心亮点 1 - 优化引擎
1. 解决同名/重复 SSQ解关联优化缺陷 修复当存在 两个相同或同名的 SSQ(标量子查询/子查询片段) 时的错误重写行为,避免错误地生成重复或冲突的列引用,提升了SSQ解关联优化的健壮性与正确性。
2. 查询折叠策略II优化 新算法在做查询折叠优化时更谨慎,不再把外层需要的列随意塞进内层查询,从而避免列污染与语义偏移。
3. NOTIN子查询重写优化:改用 NFC 决定是否添加 IS NOT NULL 使用 NFC(空值判别机制)判断是否必须补 is not null,减少不必要的保护性改写,避免因盲目添加 is not null 导致语义或性能问题。
4. 深分页优化:从仅警告改为自动重写 对大量 OFFSET 情形不再只发出警告,而是尝试重写以避免全表扫描/大范围跳过带来的性能问题。
5. 谓词下推增强
支持集合分支下推与派生表下推;支持内外表联合下推(2025-09-19 16:09)。
解决因嵌套变量与 rank() 等窗口函数共存时的下推缺陷(2025-09-09 11:38),提升在复杂窗口/嵌套条件下的下推正确性。
6. SATTC 优化在嵌套条件场景下的改进 针对带嵌套条件的可满足性转换(SATTC)场景进行了多次鲁棒性优化,减少错误判定和误写。
核心亮点 2 - SQL 解析与兼容性增强
7. DB2 优化器兼容与语法修复 增加对 DB2 的支持(优化器兼容层),并修正此前因支持 DB2 导致的 INTERVAL 语法解析错误。
8. 支持 OUTER APPLY 语法与 SQL 预格式化 更好地兼容 MSSQL 风格语法(OUTER APPLY),并在优化前优先格式化 SQL,有利于后续解析/重写流程。
9. div 可以作为标识符 允许 div(原可能被当作算术/关键字)作为列名或标识符,提升对某些 DB 路径兼容性。
10. 兼容非标准空白字符(如 U+2003) 解析器现在能容忍诸如 U+2003 等非标准空白,减少因拷贝黏贴文本带来的解析失败。
核心亮点 3 - 验证流程与变量处理
11. validateSyntax 优化 语法校验更高效/更准确,减少误判。
12. 在性能验证时都会先进行 SQL 转换以消除变量影响 统一在验证前把变量处理掉,避免因为 SQL 中变量导致的验证失败或误报。
核心亮点 4 - 分区/索引/规则检测
13. 索引列上的运算误报警排除聚合函数 当索引列参与聚合函数时,不再误判为因运算而失效的索引使用,从而减少误报。
14. 分区表规则与健壮性提升 分区相关规则更健壮,对常见边界情况的检测更准确。
15. 修复并减少冗余 indexusage 报告 减少重复或冗余的索引使用问题提醒,输出更加简洁有用。
核心亮点 5 - 可观测性与其它工程质量改进
16. 为 MSSQL 脚本添加违规规则所属行信息
报告中包含更精确的行号/位置信息,便于定位与修复。
17. 为 SQL对象 添加行信息 提升问题定位能力,支持前端页面更友好的交互(见下图)。
为 SQL对象 添加行信息。提升问题定位能力,支持前端页面更友好的交互
18. 修复窗口函数反序列化
一系列稳定性修复,减少因序列化/反序列化或占位表达式带来的异常。
结语
本期更新以“正确性优先、兼容性与可观测性加强”为主线:针对子查询重写、谓词下推与 SATTC 场景的改进,配合解析器对 DB2 / 非标准字符的友好性提升,使 PawSQL 在复杂、异构 SQL 环境下更稳健。建议团队在升级到最新版时在预生产做回归验证,关注深分页优化的重写效果与有涉及 SSQ 重写的关键查询。