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

【 使用环境 】生产环境
【 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
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
关于OB 数据和日志选择raid 磁盘的疑问
回答 1
如果使用磁盘raid卡使用writeback时,在非常高频读写时(低频时不会存在该问题),写到磁盘上的数据,立即读取数据,会发现读取的数据不是最新的数据,而是上一次老的数据,导致数据不正确.rootc
datagrip连接oceanbase
回答 1
参照 https://blog.csdn.net/ethanxu/article/details/111149561
建表耗时一分钟
回答 1
表结构涉及约70个字段,一个主键,两个唯一索引,15个索引。我们使用相同的表结构在本地没有复现出这个问题,执行大概也就一秒钟左右。辛苦帮忙根据traceid捞一下全量的日志(包括observer和ro
flinksql开启模式为latest-offset的sql语句怎么写
回答 1
用tablelisthttps://ververica.github.io/flinkcdcconnectors/master/content/connectors/oceanbasecdc(ZH).
如何查看OB_PLAN_CACHE_PLAN_STAT中的执行计划
回答 1
tenantid,ip,port,planid查planexplain视图
obd可以忽视一台主机重启吗
回答 1
暂时不支持。因为需要做ssh连通性,这个是已知问题,后续obd版本会优化的。
OceanBase是索引组织表还是堆表?
回答 2
已采纳
索引组织表
备份任务无法取消,显示STATUS: CANCELING
回答 1
应该是某个节点卡住了,快速解决,有条件可以重启下集群,再看下是否能取消掉。或者查看下rootserver、observer日志看下是卡在哪个节点。重启对应节点。
麒麟V10安装社区版的哪个版本支持
回答 1
OceanBase4.2社区版centos8的安装包
备份恢复:只有企业版的OCP带图形界面的备份恢复?
回答 1
OCPExpree不支持备份恢复,社区版OCP是支持的https://www.oceanbase.com/docs/communityocpcn10000000001832580