【 TiDB 使用环境】生产环境
【 TiDB 版本】v5.4.3
【复现路径】
【遇到的问题】
数据读取不走索引,只有指定 force/use index 时才会走索引,可复现.
表数据量是多少?
where content_id 有多少数据量?
看执行计划,估了,一百多亿数据啊。
执行explain analyze看看呢?explain可能不一定准确。另外看看这个表的表健康度是多少?
content_id过滤条件有点差但也不至于全表扫吧,100多亿的表content_id过滤出1千万。。。
关注该问题
持续关注 百亿数据的查询
可以通过EXPLAIN FORMAT=‘verbose’ 在接SQL看一下该SQL的代价
1 个赞
的确挺奇怪的,加hint试试。
像是因为回表导致的。
可以SELECT一个索引字段看一下是否走索引。
TiDB回表代价确实比较大,但是不知道具体该如何计算比例是如何的
素引的数据分布是否合理,如果数据分布不合理,数据库衡量代价太多的话,估计就走全盘扫描了
看看这种等值查询是不是count-min-sketch引起的,不是的话可以绑定执行计划来解决。
可以加hint,试试强制走索引。