Files
oceanbase/docs/docs-cn/7.developer-guide-1/6.appendix/3.common-sql-hints-for-oceanbase.md
2022-02-10 14:51:49 +08:00

48 lines
3.3 KiB
Markdown

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* | 指定分布式执行的并行度。 |