目标
用统一的决策框架评估重写与索引建议的语义、兼容性、收益和成本,并在测试、审核后安全落地。准备工作
已有包含重写或索引建议的优化结果可供评估。决策框架
评估重写建议
比较原始 SQL 与重写 SQL 时,重点检查:- 返回列、数据类型和列顺序;
NULL语义;- 重复行与去重行为;
- 过滤和连接条件;
- 聚合、排序、分页和窗口函数;
- 数据修改范围;
- 目标数据库兼容性。
NULL、外连接、重复行、非确定性函数、隐式类型转换和数据修改语句时,应做更严格的结果一致性验证。不要只因为重写 SQL 更短或预估代价更低就直接采用。
评估索引建议
推荐索引是候选 DDL。阅读索引定义时确认目标表与 Schema、索引类型、键列及顺序、包含列、过滤条件、唯一性和在线创建选项。 检查与现有索引的关系:
同时评估收益(减少全表扫描、降低读取行数、改善连接、减少排序、覆盖查询)与成本(写入变慢、存储、创建耗时、锁影响、维护、分布式开销)。
落地建议
1
在测试环境验证
重写:比较结果一致性并检查计划;索引:创建候选索引后对比计划、耗时和扫描量。
2
执行自动化性能验证
用相同环境、数据、参数和会话条件,比较计划、代价、耗时和资源消耗。
3
提交变更审核
附上原始 SQL、建议依据、测试证据、容量估算、实施窗口和回退方案。
4
生产实施与观察
在批准窗口实施,观察锁、负载、空间、写入延迟和执行计划变化。
不应直接采用的情况
- SQL 或对象未完整解析;
- 工作空间与目标数据库不一致;
- 无法解释规则依据或适用条件;
- 结果一致性测试失败;
- 推荐索引与已有索引重复,或表写入压力高、收益不足以覆盖维护成本;
- 测试环境中数据库没有实际使用该索引;
- 仅有预估收益,没有满足要求的验证。