HINT作为一种SQL补充语法,在数据库中扮演着非常重要的角色。HINT可以改变SQL的执行方式。Lindorm宽表SQL也支持HINT语法,例如使用HINT进行多版本数据管理。本文介绍HINT的基本语法和使用场景。
注意事项
- 宽表引擎为2.3.1及以上的版本支持HINT。如何升级版本,请参见升级小版本。
- HINT必须在INSERT、UPSERT和SELECT关键字后使用。
- HINT仅支持简单查询,不支持子查询、分组查询等复杂查询。
- HINT不支持PreparedStatement方法。
HINT语法
hintExpression ::= /*+ hintItems */
hintItems ::= hintItem (',' hintItem )*
hintItem ::= identifier ('(' hintOption ( ',' hintOption)* ')')?
hintOption ::= expression
说明
- HINT的格式为
/*+ hintItems */
。其中hintItems
是HINT语句,与具体的操作相关,多个hintItems
之间使用半角逗号(,)分隔。 - HINT语句位于
/*+
与*/
之间。
Lindorm宽表SQL语句中,仅允许在INSERT、UPSERT和SELECT关键字后指定HINT。示例如下:
UPSERT /*+ _l_ts_(3000) */ INTO t_test_ts(c1, c3) VALUES (1, 'c3');
SELECT /*+ _l_versions_(1) */ c1, c3, c3_l_ts FROM t_test_ts;
说明 HINT不能在其他关键字后使用,错误示例:
UPSERT INTO /*+ _l_ts_(3000) */ t_test_ts(c1, c3) VALUES (1, 'c3');
。
使用场景
在以下场景中可以使用HINT。