暂无图片
以索引列为查询条件进行查询并用主键对结果进行排序,执行了全表扫描
我来答
分享
暂无图片 匿名用户
以索引列为查询条件进行查询并用主键对结果进行排序,执行了全表扫描

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】3.1.4-OceanBase CE
【问题描述】
有一数据量接近一亿的无分区表A,自增主键为b,联合索引列为c与d,执行如下sql:
Select * from A where c = 10000 order by b limit 1000;
表A中符合条件的数据量约为十万级,执行该sql时间超过1min
经检查执行计划,发现该sql实际执行了全表扫描
而将按主键排序去掉之后速度很快,检查执行计划走了联合索引
请问这种现象的原因是什么?是什么原理?联合索引为什么失效了?
【复现路径】
使用 Select /*+ INDEX(A c+d联合索引名) */ * from A where c = 10000 order by b limit 1000;
0.1s完成查询
【问题现象及影响】
看起来完全应该走索引列的查询却走了全表扫描

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

看起来是走了索引,但他似乎是先执行了全表排序再走的索引,如果用hint强制指定索引的话看起来就不会先走全表排序

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏