> ## 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 优化

> 从创建工作空间到获得 SQL 重写、索引推荐和性能验证结果，快速完成第一次 PawSQL 优化。

PawSQL 可以在一个工作流中分析 SQL，发现潜在问题，并给出可执行的重写方案、索引建议和性能验证结果。本教程将带你完成第一次 SQL 优化。

<Note>
  本教程对应视频 **PawSQL in a Minute** 的核心操作流程。首次使用时，创建工作空间可能需要额外几分钟；工作空间准备完成后，一次优化通常只需要三个步骤。
</Note>

<iframe className="w-full aspect-video rounded-xl" src="https://player.bilibili.com/player.html?bvid=BV1RJoNY9Es7&high_quality=3" title="PawSQL 一分钟演示" scrolling="no" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />

## 你将完成什么

完成本教程后，你将能够：

* 创建或选择一个工作空间；
* 提交一条待优化 SQL；
* 查看 SQL质量检查、自动重写和智能索引推荐；
* 在具备数据库连接时，对优化前后的性能进行验证。

## 开始之前

你需要：

* 一个可用的 PawSQL 账号和产品访问地址；
* 一条需要分析的 `SELECT` 语句；
* SQL 所引用对象的结构信息，或一个可访问的数据库连接。

<Tip>
  只想快速体验？使用 DDL 创建工作空间即可，无需连接真实数据库。若要获取基于统计信息的索引建议、执行计划和性能验证结果，请使用数据库连接。
</Tip>

## 第 1 步：创建或选择工作空间

工作空间用于保存数据库类型、版本、表结构和统计信息等优化上下文。准确的上下文可以帮助 PawSQL 正确解析 SQL，并生成更可靠的优化建议。

<Steps>
  <Step title="进入工作空间">
    登录 PawSQL，在工作空间列表中选择一个现有工作空间，或点击 **新建工作空间**。
  </Step>

  <Step title="选择数据库类型和版本">
    选择待优化 SQL 实际运行的数据库及版本。不同数据库的语法、优化规则和索引能力不同，请不要选择“最接近”的数据库作为替代。
  </Step>

  <Step title="提供数据库结构">
    根据你的使用环境选择一种方式：

    <Tabs>
      <Tab title="导入 DDL">
        粘贴或上传 SQL 涉及的 `CREATE TABLE`、`CREATE INDEX` 等 DDL。该方式适合快速体验、开发测试或无法连接数据库的场景。
      </Tab>

      <Tab title="连接数据库">
        配置数据库地址、端口、数据库名和只读账号，并测试连接。PawSQL 可按授权范围读取对象定义、统计信息和执行计划所需的元数据。
      </Tab>
    </Tabs>
  </Step>
</Steps>

<Frame caption="选择现有工作空间，或使用 DDL / 数据库连接创建新工作空间">
  <img src="https://mintcdn.com/pawsql/cdtFYB4QMM1nGHhK/images/quickstart/01-workspace.png?fit=max&auto=format&n=cdtFYB4QMM1nGHhK&q=85&s=e7a19a52064aa2714efce75ad87736ce" alt="创建工作空间：选择数据库类型并导入 DDL 或连接数据库" width="2156" height="1552" data-path="images/quickstart/01-workspace.png" />
</Frame>

<Warning>
  生产环境建议使用权限最小化的只读账号。不要在截图、文档或代码仓库中公开数据库密码、内网地址或访问令牌。
</Warning>

## 第 2 步：提交待优化 SQL

进入工作空间后，打开 **SQL 优化** 页面，将 SQL 粘贴到编辑器中。

下面的示例用于查询指定客户最近创建的已付款订单：

```sql theme={null}
SELECT o.order_id,
       o.customer_id,
       o.created_at,
       o.total_amount
FROM orders o
WHERE o.customer_id = 10001
  AND o.status = 'PAID'
ORDER BY o.created_at DESC
LIMIT 20;
```

<Steps>
  <Step title="输入 SQL">
    粘贴一条完整 SQL。请保留真实的表名、列名、连接条件和过滤条件；这些信息会影响审核和索引推荐结果。
  </Step>

  <Step title="确认上下文">
    检查当前工作空间、默认数据库或 Schema。若 SQL 使用了非默认 Schema，请在 SQL 中显式限定对象，或在任务配置中选择正确的 Schema。
  </Step>

  <Step title="开始优化">
    点击 **优化**。PawSQL 将解析 SQL，并根据当前工作空间可用的信息执行规则审核、自动重写和索引分析。
  </Step>
</Steps>

<Frame caption="确认工作空间和 Schema 后，提交 SQL 进行优化">
  <img src="https://mintcdn.com/pawsql/cdtFYB4QMM1nGHhK/images/quickstart/02-submit-sql.png?fit=max&auto=format&n=cdtFYB4QMM1nGHhK&q=85&s=d0aca2a17fda1b55b6fa569a2b1fed1d" alt="在 SQL 编辑器中粘贴示例 SQL 并准备优化" width="2156" height="1552" data-path="images/quickstart/02-submit-sql.png" />
</Frame>

## 第 3 步：阅读优化结果

优化完成后，先查看结果摘要，再逐项检查建议。不同 SQL 和工作空间可能展示不同结果。

<CardGroup cols={2}>
  <Card title="SQL质量检查" icon="list-check">
    识别正确性、性能、安全性和可维护性风险，并说明命中的规则与修改方向。
  </Card>

  <Card title="自动重写" icon="wand-sparkles">
    在保持语义等价的前提下，提供更利于数据库优化器执行的候选 SQL。
  </Card>

  <Card title="智能索引推荐" icon="layers">
    结合过滤、连接、排序和分组字段，给出候选索引及对应的建索引语句。
  </Card>

  <Card title="自动化性能验证" icon="gauge">
    在可连接数据库时，对优化前后的执行计划或实际执行表现进行比较。
  </Card>
</CardGroup>

<Frame caption="从结果摘要进入审核、重写、索引和性能验证详情">
  <img src="https://mintcdn.com/pawsql/cdtFYB4QMM1nGHhK/images/quickstart/03-optimization-result.png?fit=max&auto=format&n=cdtFYB4QMM1nGHhK&q=85&s=0755cb305a3e35171d7b21ede6bdcedf" alt="优化结果：索引推荐、审核建议与性能提升摘要" width="2156" height="1552" data-path="images/quickstart/03-optimization-result.png" />
</Frame>

### 建议的阅读顺序

1. **先处理高优先级审核问题。** 正确性或安全性问题通常比单纯的性能建议更紧急。
2. **比较原始 SQL 与重写 SQL。** 确认业务语义、返回列和排序要求符合预期。
3. **评估索引建议。** 检查是否已有重复或前缀重叠索引，并考虑写入开销与存储成本。
4. **查看验证证据。** 优先采用有执行计划或实测数据支持的方案。

<Warning>
  不要未经验证就直接在生产环境执行重写 SQL 或创建索引。请先在测试环境确认结果集等价，并按照组织的变更流程评估和发布。
</Warning>

## 如果没有生成建议

<AccordionGroup>
  <Accordion title="SQL 无法解析">
    检查工作空间的数据库类型和版本是否正确，SQL 是否完整，以及是否包含当前版本尚未支持的方言语法。
  </Accordion>

  <Accordion title="缺少对象信息">
    补充 SQL 涉及表的 DDL，或检查数据库连接账号是否有权读取相应 Schema 的元数据。
  </Accordion>

  <Accordion title="没有索引推荐">
    这并不一定表示分析失败。当前索引可能已经覆盖访问路径，SQL 也可能不适合通过新增索引优化。请结合审核和执行计划结果判断。
  </Accordion>

  <Accordion title="无法进行性能验证">
    性能验证通常需要可用的数据库连接、执行权限和足够的运行数据。仅导入 DDL 的工作空间仍可用于语法分析、规则审核和部分索引分析。
  </Accordion>
</AccordionGroup>

## 下一步

<CardGroup cols={2}>
  <Card title="选择使用方式" icon="route" href="/getting-started/choose-access">
    比较 Web、IDE、API 和流水线接入方式。
  </Card>

  <Card title="支持的数据库" icon="database" href="/getting-started/supported-databases">
    查看数据库、版本和能力兼容范围。
  </Card>

  <Card title="查询重写优化" icon="git-compare" href="/features/automatic-sql-rewrite">
    了解自动重写的工作方式和使用边界。
  </Card>

  <Card title="自动化性能验证" icon="chart-line" href="/features/performance-validation">
    了解如何用执行证据选择优化方案。
  </Card>
</CardGroup>
