TiDB同一条查询SQL走不同的索引

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

这是同一条sql来的,为什么有时选择的索引不同,这个问题要怎么考虑呢,有时候查询90ms左右,但是有时候要2s多,请大神们提供一下排查的方向:weary:

这是该表建立的索引。 如果还需要提供什么信息,请在下面留言下

可以通过 SHOW STATS_HEALTHY 看下表统计信息的健康度 手动收集一下统计信息,看下执行计划的情况

好,多谢指点,我先看一下

大佬,tidb选择索引的策略,是不是通过统计信息来判断的呢?一般执行同一条sql会使用不同的索引考虑哪些情况呢?我刚刚执行 ANALYZE TABLE TableNameList 命令后,暂时发现上面的sql都是走较快的索引了

数据库优化器一般都会有 RBO 和 CBO 模型,RBO 是基于规则的优化,CBO 是基于代价的优化,CBO 是计算所有可能的执行计划并从中选择最佳的执行计划,所以 CBO 会比 RBO 更加可靠,更加合理,但是 CBO 优化是需要依赖于统计信息的,如果统计信息不准确,容易导致 CBO 模型不能走到最佳的执行计划。

多谢,给力!:+1:

:+1::+1::+1: