> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pawsql.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> PawSQL 是一个产品：Cloud 是公网部署形态，Engine / Optimizer / Auditor / Advisor / Patroller 是同一产品的组件与交付形态，不是彼此独立的产品。 / PawSQL is a single product: Cloud is the public deployment form, while Engine / Optimizer / Auditor / Advisor / Patroller are components and delivery forms of the same product, not separate products.
> 术语以站内术语表为准：SQL 审核对应英文 SQL Review，查询重写对应 Query Rewrite，索引推荐对应 Index Recommendation；英文内容统一用 Review，不用 Audit。 / Use the site glossary for terminology: 审核 is SQL Review, 重写 is Query Rewrite, 索引推荐 is Index Recommendation; English content uses Review, never Audit.
> 引用能力范围或版本支持时以对应页面为准；标注 unknown、或 status 非 published 的内容表示尚未经产品核实，不应作为事实引用。 / Cite capability scope and version support from the corresponding page; content marked unknown, or with a status other than published, is not yet product-verified and must not be cited as fact.

# 评估与落地建议

> 用统一的决策框架评估重写与索引建议的语义、兼容性、收益和成本，并在测试、审核后安全落地。

优化建议是候选方案，不是自动发布指令。无论是重写 SQL 还是推荐索引，落地前都应按同一套框架评估语义、兼容性、收益和成本。

## 目标

用统一的决策框架评估重写与索引建议的语义、兼容性、收益和成本，并在测试、审核后安全落地。

## 准备工作

已有包含重写或索引建议的优化结果可供评估。

## 决策框架

| 判断维度   | 需要回答的问题               |
| ------ | --------------------- |
| 语义正确性  | 重写后是否返回相同结果并保持相同业务含义？ |
| 数据库兼容性 | 目标数据库类型和版本是否支持该语法或索引？ |
| 性能收益   | 执行计划、预估代价或实测指标是否改善？   |
| 变更成本   | 是否增加写入、存储、锁和维护成本？     |
| 上线风险   | 是否完成测试、审核、回退和发布准备？    |

<Warning>
  重写 SQL 和索引定义不能因为由工具生成就直接用于生产。任何变更都应经过语义检查、测试验证和组织规定的发布流程。
</Warning>

## 评估重写建议

比较原始 SQL 与重写 SQL 时，重点检查：

* 返回列、数据类型和列顺序；
* `NULL` 语义；
* 重复行与去重行为；
* 过滤和连接条件；
* 聚合、排序、分页和窗口函数；
* 数据修改范围；
* 目标数据库兼容性。

涉及 `NULL`、外连接、重复行、非确定性函数、隐式类型转换和数据修改语句时，应做更严格的结果一致性验证。不要只因为重写 SQL 更短或预估代价更低就直接采用。

## 评估索引建议

推荐索引是候选 DDL。阅读索引定义时确认目标表与 Schema、索引类型、键列及顺序、包含列、过滤条件、唯一性和在线创建选项。

检查与现有索引的关系：

| 关系         | 判断重点            | 可能处理方式          |
| ---------- | --------------- | --------------- |
| 完全相同       | 键列、顺序和属性一致      | 通常不应重复创建        |
| 现有索引覆盖推荐索引 | 推荐列是现有索引前导列     | 优先验证现有索引是否已满足需求 |
| 推荐索引覆盖现有索引 | 新索引可能替代较短索引     | 评估其他 SQL 后考虑合并  |
| 列相同、顺序不同   | 过滤选择性、排序和连接需求不同 | 分别验证，不只按列集合判断   |
| 部分重叠       | 各自服务不同工作负载      | 结合全局 SQL 负载评估   |

同时评估收益（减少全表扫描、降低读取行数、改善连接、减少排序、覆盖查询）与成本（写入变慢、存储、创建耗时、锁影响、维护、分布式开销）。

## 落地建议

<Steps>
  <Step title="在测试环境验证">
    重写：比较结果一致性并检查计划；索引：创建候选索引后对比计划、耗时和扫描量。
  </Step>

  <Step title="执行自动化性能验证">
    用相同环境、数据、参数和会话条件，比较计划、代价、耗时和资源消耗。
  </Step>

  <Step title="提交变更审核">
    附上原始 SQL、建议依据、测试证据、容量估算、实施窗口和回退方案。
  </Step>

  <Step title="生产实施与观察">
    在批准窗口实施，观察锁、负载、空间、写入延迟和执行计划变化。
  </Step>
</Steps>

## 不应直接采用的情况

* SQL 或对象未完整解析；
* 工作空间与目标数据库不一致；
* 无法解释规则依据或适用条件；
* 结果一致性测试失败；
* 推荐索引与已有索引重复，或表写入压力高、收益不足以覆盖维护成本；
* 测试环境中数据库没有实际使用该索引；
* 仅有预估收益，没有满足要求的验证。

## 记录处理结论

为每项建议记录采用、调整、拒绝或待验证的结论，并保留负责人、判断依据、测试环境与参数、执行计划或性能数据、计划上线时间和回退方式。

## 预期结果

通过评估的建议先在测试环境验证、再在审核后落地到生产，每项处理结论都被记录。

## 验证

在测试环境对比结果与执行计划，确认数据库实际使用了推荐索引，并为每项建议记录采用、调整、拒绝或待验证的结论。

## 下一步

<CardGroup cols={2}>
  <Card title="查看优化结果" href="/user-guide/optimization/explain-output" />

  <Card title="智能索引推荐能力" href="/features/index-recommendation" />
</CardGroup>
