OceanBase 常用 SQL Hints 
===========================================



SQL Hint的语法格式如下：

```javascript
/*+ HINT_NAME */
```



或

```javascript
/*+ HINT_NAME ( HINT_PARA )
```



如果是在命令行客户端 obclient 或 mysql 下连接 OceanBase，注意需要指定参数 -c ，这样 Hint 文本才会发送到 OBServer 端生效。



OceanBase 常用 SQL Hint 如下表所示：


|     **Hint** **名称**     |                    **Hint** **参数**                    |                              **Hint** **语义**                               |
|-------------------------|-------------------------------------------------------|----------------------------------------------------------------------------|
| NO_REWRITE              |                                                       | 不改写SQL。                                                                    |
| READ_CONSISTENCY        | weak\|strong\|frozen                                  | weak：弱一致性读 strong：强一致性读 frozen：读最近一次冻结点的数据 |
| INDEX_HINT              | \[ *qb_name* \] *table_name* *index_name*             | 指定查询表时选择的索引。                                                               |
| QUERY_TIMEOUT           | *int64*                                               | 指定语句执行的超时时间，单位是微秒(us)。                                                     |
| LEADING                 | \[ *qb_name* \] *table_name*  \[, *table* _ *name* \] | 指定多表连接时的顺序。                                                                |
| ORDERED                 |                                                       | 指定多表连接顺序按SQL中表出现的顺序。                                                       |
| FULL                    | \[qb *_name* \] *table_name*                          | 指定表的访问方式为全表扫描(有主键时会读主键)。                                                   |
| USE_MERGE               | \[qb *_name* \] *table_name*  \[, *table_name* \]     | 指定多表连接时使用MERGE算法。                                                          |
| USE_NL                  | \[ *qb_name* \] *table_name*  \[, *table_name* \]     | 指定多表连接时使用NEST LOOP算法。                                                      |
| USE_BNL                 | \[qb_name\] table_name \[,table_name\]                | 指定多表连接时适用BLOCK NEST LOOP算法。                                                |
| USE_HASH_AGGREGATION    | \[ *qb_name* \]                                       | 指定 aggregate   方法使用HASH AGGREGATE，例如HASH   GROUP BY，HASH DISTINCT。         |
| NO_USE_HASH_AGGREGATION | \[ *qb_name* \]                                       | 指定 aggregate 方法不使用HASH AGGREGATE，使用MERGE GROUP BY，MERGE DISTINCT 。         |
| QB_NAME                 | *qb_name*                                             | 指定 query   block的名称。                                                       |
| PARALLEL                | *int64*                                               | 指定分布式执行的并行度。                                                               |



