tiflash索引问题

tiflash什么情况下会走索引?
现在发现绝大部分情况下,tiflash都是走 TableFullScan 。即使表上建了索引也会视而不见。

tiflash本身就用不了索引吧,发现过有用到索引的时候吗 :joy:

1 个赞

有,聚簇索引。
那用不了索引的话,是个bug,大表聚合会很慢

这不能算是 bug 吧,tilash 并不同步索引数据

你需要了解一下列存。tiflash使用的就是列存。

套用食神的一句话,那就是在列存中,根本没有什么索引,或者说列列都有索引。 :rofl:

tiflash走啥索引,它是列存数据库,相当于每一列上都有自己的索引

建索引也只是在tikv上创建了,而不是在TiFlash里,TiFlash都是表扫跟传统行存不一样的。

ok。那为什么有时候会走TableRangeScan?正常都是TableFullScan啊

well 确实有,在where条件里加上主键的范围查询,例如

mysql> explain select /*+ read_from_storage(tiflash[t]) */ * from t where uid > 1;
+------------------------+---------+--------------+---------------+----------------------------------+
| id                     | estRows | task         | access object | operator info                    |
+------------------------+---------+--------------+---------------+----------------------------------+
| TableReader_7          | 1002.00 | root         |               | data:TableRangeScan_6            |
| └─TableRangeScan_6     | 1002.00 | cop[tiflash] | table:t       | range:(1,+inf], keep order:false |
+------------------------+---------+--------------+---------------+----------------------------------+
2 rows in set (0.01 sec)
1 个赞

没有用到索引

在tiflash上,通常索引比不上fullscan

索引失效了

是的,tiflash一般是不会走索引的,虽然是全表扫描,但是速度杠杠滴~

这个应该对你也有帮助

1 个赞

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