为什么只单独分区值也会非常慢呢

请问一个问题,我的tidb使用school_id进行分区,我查询的是带上schoolId会很快,但是当我想查询全部的schoold (select school_id from xxx) 时候发现其走不了索引,需要一个一个分区查,非常慢,请问有什么办法解决这个问题吗。

需要全表扫描的当然慢,你加上distinct应该快很多

可是加上也慢,但是不是应该有个索引树存储分区键吗,为什么要全表扫描

tidb默认是聚簇表,也就是数据是按key有序排列的,主键不会真的有索引

全表扫描慢啊

没有这种默认的索引树,你可以针对分区键创建一个索引,查询的时候会快一点,但是由于tidb只有分区索引,他还是会扫描所有分区索引,速度会有点慢,不如全局索引

1 个赞

没有带分区键,类似于广播,速度肯定慢

谢谢分享,收货很大!

当前 TIDB 的所有版本对分区表,都没有全局索引功能,你可以测试下及时通过主键查询也会扫描所有分区,等 TiDB 8.x 相应功能会完善

1 个赞

你的表主键是什么?

加主键的“聚簇索引”管用不?

school_id 是主键吗?你这SQL都没条件肯定全表扫描啊, 主建的全表扫描和全索引扫描一样。如果是2级索引的话可以 做个analyze table后看看能不能全索引扫描,也上传下explain analyze的执行计划, tidb都是local 类型分区 ,2级索因要扫描所有分区。

2 个赞

索引生效了么

升级配置看看