忽略主键的hint是什么样,文档中这句话是什么意思

第一个问题: 忽略主键是这样吗? /*+ ignore(tablename primary ) */
第二个问题:
原文链接:OceanBase分布式数据库-海量数据 笔笔算数
“对于 IGNORE 方式,如果将包括主表在内的所有 INDEX 忽略,则 Hint 无效。”
意思是忽略主键,表上的所有索引失效?只能走全表扫描?

OB 的表 不是堆表,而是索引组织表。 表本身就是主键索引(表如果没有建主键,则有隐藏主键索引)。主键的算子就两种方式:TABLE GET 或 TABLE SCAN 。
所以文档的意思是,你不可能连表自身在内将所有索引都 IGNORE掉 。如果你这么写,优化器将无路可走,就判定这个 HINT 无效。 :grinning:

1 个赞

比如一个查询,select * from table1 where col1=‘aaa’ order by id desc; id(pk),col1(idx_col1)
假设现在这个这个查询走的table scan,想忽略掉主键该走idx_col1索引怎么写(不使用use idx_col1 )

OB 的文档没有举例。不过OB MySQL 是朝着 MySQL 兼容性去努力的。碰到类似问题你可以去查一下 MySQL 如何忽略主键索引。 :grinning:

嗯。MySQL忽略主键确实在用,但是OB的加了忽略主键没用过所以确认下,是自己写的不对,还是其他原因没生效。

上面是 OB 截图。用法跟 mysql 一致。

确实是这样! 能不能使用/+/格式写,/*+ ignore(tablename,primary) */ 这样好像不生效。

1 个赞