OB 的 hint 用法和 MySQL 一样吗,怎么通过 hint 强制走某个索引?

OB 的 hint 用法和 MySQL 一样吗,怎么通过 hint 强制走某个索引?

1 个赞

可以把语句发一下 看看 ob是mysql模式么?是社区版 还是企业版

OceanBase 数据库的 SQL Hint 用法部分兼容 MySQL,但也有自身特性和差异,尤其是在强制使用指定索引方面。具体可参考:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003977854

OceanBase 中通过 Hint 强制使用指定索引的方法

在 OceanBase 的 MySQL 模式下,可以使用如下语法强制使用指定索引:

SELECT /*+ INDEX(table_name index_name) */ * FROM table_name;

或者使用 MySQL 原生风格的写法(也支持):

SELECT * FROM table_name USE INDEX (index_name);

但根据官方文档,推荐使用 /*+ INDEX(...) */ 这种注释形式的 Hint,因为这是 OceanBase 优化器明确识别的 Hint 语法。

示例:

SELECT /*+ INDEX(t1 idx_t1_c1) */ c1, c2 FROM t1 WHERE c1 = 'abc';
1 个赞

用啥hint,人尽量还是不要干预优化器。