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。