> ## 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 文件、数据库日志或 MyBatis Mapper 文件输入待优化的 SQL，构成优化任务的工作负载。

工作负载是你要优化的 SQL：可以是单个 DML 语句，也可以是由 `;` 分隔的多条语句。PawSQL 支持从以下来源输入待优化的 SQL。

## 目标

从文本框、SQL 文件、数据库日志或 MyBatis Mapper 文件输入待优化的 SQL，构成优化任务的工作负载。

## 前提条件

* 已创建或获得一个可用工作空间；
* 工作空间的数据库类型、版本和 Schema 与目标 SQL 一致；
* SQL 引用的表、视图和列存在于工作空间；
* SQL 已移除密码、令牌和不必要的敏感数据。

## 输入方式

PawSQL 支持多种 SQL 输入来源，选择与你工作流匹配的一种。

<Tabs>
  <Tab title="SQL 文本">
    在文本框直接粘贴或输入合法 SQL，支持以 `;` 分隔多条语句。适合临时分析、单条问题 SQL 或快速验证。
  </Tab>

  <Tab title="SQL 文件">
    上传一个 SQL 文件，PawSQL 提取其中的 SQL 语句，支持以 `;` 分隔多条语句。
  </Tab>

  <Tab title="慢查询日志">
    从数据库的慢日志或通用日志提取 SQL。

    **MySQL**

    慢日志记录执行时间达到 `long_query_time`（秒）且扫描行数达到 `min_examined_row_limit` 的语句；需要记录未使用索引的查询时，可另开 `log_queries_not_using_indexes`；通用日志记录客户端连接期间执行的每条语句。

    ```sql theme={null}
    set global log_output='file';
    set global slow_query_log='on';
    set global slow_query_log_file = '/tmp/localhost-slow.log';
    set global long_query_time = 5;
    ```

    **PostgreSQL**

    在 `postgresql.conf` 中启用 SQL 日志，并用 `log_min_duration_statement`（毫秒）只记录超过阈值的慢 SQL：

    ```text theme={null}
    log_statement = 'all'
    log_directory = 'pg_log'
    log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
    logging_collector = on
    log_min_duration_statement = 5000
    ```

    **openGauss**

    配置方式与 PostgreSQL 类似，通过 `postgresql.conf` 设置 `log_statement` 与 `log_min_duration_statement`。
  </Tab>

  <Tab title="MyBatis Mapper 文件">
    PawSQL 遍历 Mapper 文件中的所有 SQL 元素节点，组合出所有可能的 SQL 结构作为优化输入。这种方式可能产生真实生产中不会出现的 SQL，从而影响优化（例如推荐出无用的索引或列）。因此需要在 SQL 预览这一步排除掉永远不会出现的 SQL。
  </Tab>
</Tabs>

<Frame caption="从文本、文件、日志或 Mapper 文件输入待优化 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>

## 支持的 SQL 类型

`select`、`update`、`delete`、`insert ... select`、`merge`、`replace`。

## 参数化与脱敏

* 使用 PawSQL 当前版本支持的参数形式，必要时提供代表性参数值；
* 参数值会影响选择率和执行计划，性能验证时应覆盖常见与边界场景；
* 不使用真实身份证号、手机号、账户号等业务数据；
* 模板 SQL 无法解析时，先转换为一条可执行的代表性 SQL。

## 预期结果

所选来源的 SQL 被解析为工作负载，进入优化任务。

## 验证

确认 SQL 解析成功、引用的表与列在工作空间中可识别，且已移除密码、令牌等敏感数据。

## 常见问题

### SQL 无法解析

检查数据库方言、版本、语句完整性、参数占位符、引号和分隔符。可以先构造最小复现 SQL。

### 表或列无法识别

检查工作空间、默认 Schema、对象大小写以及元数据是否已更新。

## 下一步

<CardGroup cols={2}>
  <Card title="优化任务创建与配置" href="/user-guide/optimization/setup-optimization" />

  <Card title="工作空间和上下文" href="/user-guide/workspaces" />

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