
# 获取诊断结果 - ObtainDiagnoseResults
#### 功能介绍
获取SQL诊断结果。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DAS/doc?api=ShowTuning)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-das/das_01_0130.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                       | 访问级别  | 资源类型（\*为必须）                                        | 条件键 | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | das:clouddba:sqlDiagnosis | write | connection instance | -   | -  | -      |
     
  
 
#### URI
GET /v3/{project_id}/connections/{connection_id}/tuning/{message_id}/show-tuning-result
表1路径参数 
| 参数            | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| message_id    | 是    | String | **参数解释**： 诊断信息ID。 获取方法请参见[5.2.30-执行SQL诊断](https://support.huaweicloud.com/api-das/das_01_0059.html)。 **约束限制：** 不涉及。 **取值范围：** 只能由英文字母、数字组成，且长度为24个字符。 **默认取值：** 不涉及。         |
| project_id    | 是    | String | **参数解释**： 租户在某一Region下的项目ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-das/das_01_0036.html)。 **约束限制：** 不涉及。 **取值范围：** 只能由英文字母、数字组成，且长度为32个字符。 **默认取值：** 不涉及。 |
| connection_id | 是    | String | **参数解释：** 数据库用户ID。用户使用数据库账号与数据库建立的连接ID（数据库用户ID由[注册数据库用户](https://support.huaweicloud.com/api-das/das_01_0019.html)接口创建）。 **取值范围：** 只能由英文字母、数字、中划线组成，且长度为36个字符的UUID。                                                                                                                                                      |
   
#### 请求参数
无。
#### 响应参数
**状态码： 200**
表2响应Body参数 
| 参数          | 参数类型                                                     | 描述                                                                                                                   |
|:---|:---|:---|
| tune_result | [AdviceResult] object | **参数解释：** 诊断结果。 **取值范围：** 不涉及。 |
   
 表3AdviceResult 
| 参数             | 参数类型                                                                | 描述                                                                                                                        |
|:---|:---|:---|
| message_id     | String                                                              | **参数解释：** 诊断信息ID。 **取值范围：** 不涉及。 |
| status_code    | String                                                              | **参数解释：** 状态码。 **取值范围：** 不涉及。   |
| error_code     | String                                                              | **参数解释：** 错误码。 **取值范围：** 不涉及。     |
| error_message  | String                                                              | **参数解释：** 错误信息。 **取值范围：** 不涉及。      |
| index_advice   | Array of [IndexAdviceInfo] objects | **参数解释：** 索引建议。                                                                              |
| tuning_advice  | Array of strings                                                    | **参数解释：** 诊断建议。                                                                               |
| formatted_sql  | String                                                              | **参数解释：** 格式化SQL。 **取值范围：** 不涉及。   |
| original_sql   | String                                                              | **参数解释：** 原始SQL。 **取值范围：** 不涉及。      |
| explain        | Array of [Explain] objects         | **参数解释：** 执行计划。                                                                              |
| tb_pos_infos   | Array of [TbPosInfo] objects      | **参数解释：** 表位置信息。                                                                            |
| feedback_infos | [FeedbackInfo] object             | **参数解释：** 反馈信息。 **取值范围：** 不涉及。    |
   
 表4IndexAdviceInfo 
| 参数            | 参数类型             | 描述                                                                                                                              |
|:---|:---|:---|
| schema_name   | String           | **参数解释：** Schema名。 **取值范围：** 不涉及。     |
| table_name    | String           | **参数解释：** 表名。 **取值范围：** 不涉及。          |
| index_name    | String           | **参数解释：** 索引名。 **取值范围：** 不涉及。         |
| columns       | Array of strings | **参数解释：** 列。                                                                                      |
| unique        | Boolean          | **参数解释：** 是否唯一。 **取值范围：** 不涉及。       |
| track_id      | String           | **参数解释：** 追踪ID。 **取值范围：** 不涉及。          |
| quality       | Object           | **参数解释：** 质量。 **取值范围：** 不涉及。         |
| ddl_add_index | String           | **参数解释：** DDL需要添加的索引。 **取值范围：** 不涉及。 |
   
 表5Explain 
| 参数            | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| id            | Integer | **参数解释：** SELECT子句的编号。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| select_type   | String  | **参数解释：** SELECT子句的类型。 **取值范围：** - SIMPLE：简单查询  - PRIMARY：主查询  - UNION：UNION中的第二个或者后续查询  - DEPENDENT UNION：UNION中的相关查询  - UNION RESULT：UNION的结果集  - SUBQUERY：子查询  - DEPENDENT SUBQUERY：相关子查询  - DERIVED：派生表  - UNCACHEABLE SUBQUERY：不能缓存的子查询   |
| table         | String  | **参数解释：** SQL优化器选择的表JOIN顺序。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| type          | String  | **参数解释：** 查找表中行的访问类型。 (从好到坏依次为：null\>system\>const\>eq_ref\>ref\>range\>index\>all) **取值范围：** - ALL：全表扫描  - index：全索引扫描  - range：范围扫描  - ref：非唯一索引扫描  - eq_ref：唯一索引关联  - const：常量级  - system：系统级  - NULL：无需访问表                                                                               |
| possible_keys | String  | **参数解释：** 有助于高效查找行的索引。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| key           | String  | **参数解释：** 出于最小化查询成本考虑，SQL优化器实际使用的索引。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| key_len       | String  | **参数解释：** Key列所示索引的长度（字节）。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ref           | String  | **参数解释：** 在使用Key列所示索引查找数据时用到的列或常量。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| rows          | Long    | **参数解释：** Key列所示索引的长度（字节）。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| filtered      | Double  | **参数解释：** 引擎层扫描数据后根据额外的where条件过滤后剩下值的百分比。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| extra         | String  | **参数解释：** SQL解析的额外信息。 - 当出现using index时，说明SQL使用覆盖索引，性能较好。  - 当出现using filesort、using temporary、using where时，说明查询需要优化。   **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   
 表6TbPosInfo 
| 参数          | 参数类型    | 描述                                                                                                                          |
|:---|:---|:---|
| origin_name | String  | **参数解释：** 原始名称。 **取值范围：** 不涉及。 |
| name        | String  | **参数解释：** 名称。 **取值范围：** 不涉及。      |
| start       | Integer | **参数解释：** 开始。 **取值范围：** 不涉及。      |
| end         | Integer | **参数解释：** 结束。 **取值范围：** 不涉及。       |
   
 表7FeedbackInfo 
| 参数               | 参数类型   | 描述                                                                                                                              |
|:---|:---|:---|
| id               | String | **参数解释：** 编号。 **取值范围：** 不涉及。        |
| project_id       | String | **参数解释：** 项目ID。 **取值范围：** 不涉及。       |
| message_id       | String | **参数解释：** 任务消息唯一ID。 **取值范围：** 不涉及。 |
| feedback_grade   | String | **参数解释：** 反馈等级。 **取值范围：** 不涉及。         |
| feedback_content | String | **参数解释：** 反馈内容。 **取值范围：** 不涉及。       |
| gmt_created      | Long   | **参数解释：** 创建时间。 **取值范围：** 不涉及。          |
| gmt_modified     | Long   | **参数解释：** 修改时间。 **取值范围：** 不涉及。           |
   
#### 请求示例
无。
#### 响应示例
```
{
    "tune_result": {
        "message_id": "692d5a7a0cf263510807db3b",
        "status_code": "0000",
        "error_message": "Success",
        "error_code": "3",
        "index_advice": [],
        "tuning_advice": [
            "最外层Select未指定Where条件，可能返回比预期更多的行。"
        ],
        "formatted_sql": "SELECT *\nFROM lbw",
        "original_sql": "SELECT * FROM lbw",
        "explain": [
            {
                "id": 1,
                "select_type": "SIMPLE",
                "table": "lbw",
                "type": "ALL",
                "rows": 1002,
                "filtered": 100.0
            }
        ],
        "tb_pos_infos": [
            {
                "origin_name": "lbw",
                "name": "lbw",
                "start": 14,
                "end": 17
            }
        ],
        "feedback_infos": {}
    }
}
```
#### 状态码
| 状态码 | 描述                   |
|:---|:---|
| 200 | Success.             |
| 400 | BadRequest.          |
| 500 | InternalServerError. |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-das/das_01_0035.html)。
