有办法避免tiflash全表扫描吗?

执行查询操作的时候, tiflash的表每次都是全表扫描, 有办法避免全表扫描吗?

tiflash是列存数据库,理论上每个字段都是索引,全表扫就是索引全扫描

1 个赞

tiflash是列存,就是全表扫描,不会走索引的。如果想走索引,需要走tikv

1 个赞

使用hint指定tikv执行

tilash不是全表扫描,列存就是特定列全扫描

TiFlash列存并没有索引的概念,就是全表扫描。

sql优化可以参考下大佬的例子

1 个赞

TiFlash的跳跃索引还没有出来吧

1 个赞

应该是 tiflash 进行的列全扫描,tikv是全表扫描

1 个赞

还是你见多识广,我还以为列存就不用索引呢。 :sweat_smile:

翻了一下github,这个minmax-index可能是目前tiflash用到的唯一的索引了。不过看意思应该是对整形和日期自动生效。不用特意去用。

https://github.com/pingcap/tiflash/blob/0c2286c7e1a2702b3fdecb13b8c7eaf37c3be566/docs/design/2022-10-20-enhance-null-value-support-for-minmax-index.md

TiFlash 的全表扫描可能和你理解的不一样,行存的全表扫描是读取全部行的全部列,列存的是读取全部行的某些列,所以在AP场景列存的效率会非常高

关于列式存储的各种优化手段 参考战斗民族的ClickHouse 真的是简单粗暴大力出奇迹 但好用

1 个赞

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。