show index from tablename 里 Cardinality 一直为 0

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

  • 【TiDB 版本】:4.0.8
  • 【问题描述】:

show index from tablename 里 Cardinality 一直为 0,怎么协助执行计划选择唯一性更高的索引

select xxx
from t1 left join t2 on t1.code = t2.code
where t1.xx_id = 1111
and t2.status = 2
and t2.type = 3
and t1.time >= '‘2020-11-05 13:00:00’
ann (t1.status = 3 or t1.status = 4)

从执行计划来看,t2.status、t2.type 把谓词推到里面先计算了,本 SQL 最好的方式应该是 t1 的结果集根据关联字段 code 进行匹配,t2.code 是 t2 表的唯一索引。

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出打印结果,请务必全选并复制粘贴上传。

  1. 麻烦反馈下 explain analyze sql 的结果
  2. 如果可以也麻烦反馈下 表结构,多谢。

好的,我准备下。
把 t2.status、t2.type 去掉SQL 会更快。

多谢,另外0这个问题确认了,应该一直是0.方便到github提个issue吗?

好的,我去提个 issue。

ps. 搜索了一下,应该已经有了 https://github.com/pingcap/tidb/issues/16764

好的,可以关注这个issue,多谢。

我看github上这个issue还没有解决,目前我用的5.0的版本还是一直是0