详情表前缀索引列为biginteger,在=''的时候没有裁剪tablet,而in ('')的时候裁剪了tablet

【详述】
表结构如下,简单的datetime + bigint的前缀索引
image

当使用数值对索引列进行过滤时,从执行计划可以看到裁减了tablet,只剩一个tablet,符合预期。

当使用字符串对索引列进行过滤时,从执行计划可以看到没有裁剪tablet,不符合预期。从执行计划上看是将res_ins_id列进行了cast后用值相等过滤。

但当使用in(字符串)对索引列进行过滤时,从执行计划可以看到裁减了tablet,只剩一个tablet,符合预期。从执行计划上看是直接将过滤的值转成了number,因此可以裁剪。

从上述的测试结果来看对于number类型的前缀列的过滤行为让人困惑,主要是使用字符串数值进行过滤的时候,等值过滤 和 in过滤 的表现不一样。
建议在 等值过滤 的时候也可以进行优化,直接将过滤的值转成number,这样可以裁剪tablet,提升查询效率。

【是否存算分离】否。存算一体
【StarRocks版本】例如:3.3.0

这个后面可以优化下