SQL Hint的语法格式如下:

    1. /*+ HINT_NAME */

    1. /*+ HINT_NAME ( HINT_PARA )

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

    OceanBase 常用 SQL Hint 如下表所示:

    Hint 名称

    Hint 参数

    Hint 语义

    NOREWRITE

    不改写 SQL。

    READ_CONSISTENCY

    weak|strong|frozen

    weak:弱一致性读

    strong:强一致性读

    frozen:读最近一次冻结点的数据

    INDEX_HINT

    [qb_name] table_nameindex_name

    指定查询表时选择的索引。

    QUERY_TIMEOUT

    int64

    指定语句执行的超时时间,单位是微秒(us)。

    LEADING

    [qb_name] table_name [,tablename]

    指定多表连接时的顺序。

    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

    指定分布式执行的并行度。