执行计划未选择tiflash

v8.5.1
tpch 1000sf Q4 测试时未选择tiflash,2张表都有tiflash,全走tiflash 需要24秒,而走tikv要4分多钟


replayer_JtBm7vU_djqEOcNwEeezEg==_1745471396622701050.zip|attachment (107.0 KB)

1 个赞

:flushed:是不是因为子表是用的select * 的原因

其实可以加个 /*+ HASH_JOIN(lineitem,orders) */ 来纠正。

1 个赞

那就是把tiflash的mpp扫描视作了一个带索引的扫描?然后就选了indexjoin?

我觉得这里预估行数estRows已经看到很大的情况下,从tiflash的mpp扫描不能视作一个带索引的扫描,行数这么多,列存扫到这么大的数据,返回还要列转行,这个速度比根据索引扫描要慢得多。

先记得 bug

https://github.com/pingcap/tidb/issues/60991

1 个赞

手工再analyze下,有时候就好了

其实是 cost model 的问题,简单是就是 TableRangeScan 比 tiflash Scan 在 cost 更有优势,导致无法走到 tiflash 上。

1 个赞

我们也经常遇到这样的问题,后面就让研发在代码里面直接加上hint,强制走tiflash

1 个赞