同一查询语句,datetime 类型 where 条件两种写法,查询耗时从26秒下降至3秒

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】同一查询语句,datetime 类型 where 条件两种写法,查询耗时从26秒下降至3秒,写法1,写法3看执行计划有分区剪裁,写法2没有分区剪裁反而更快,两个执行计划不一样了,什么原因呢?同时对于datetime类型字段做查询条件时推荐的写法是怎样的呢?
WHERE
– 写法1 耗时26s
t.order_time >= cast(‘2024-05-28 00:00:00’ as datetime)
and t.order_time <= cast(‘2024-05-28 23:59:59’ as datetime)
– 写法2 耗时3s
t.order_time >= ‘20240528000000’
and t.order_time <= ‘20240528235959’
– 写法3 耗时26s
t.order_time >= ‘2024-05-28 00:00:00’
and t.order_time <= ‘2024-05-28 23:59:59’

【背景】
【业务影响】BE长时间下线不了
【是否存算分离】否
【StarRocks版本】2.5.19
【集群规模】:3fe(3 follower)+4be(3个be与fe混部)
【机器信息】CPU虚拟核/内存/网卡,40C/128G/万兆
【联系方式】StarRocks社区群5 -思变 [1412195108@qq.com]
【附件】
查询语句.txt (3.6 KB)
写法2执行计划.txt (32.4 KB) 写法1执行计划.txt (32.5 KB) 写法2查询profile.txt (363.3 KB) 写法1查询profile.txt (387.9 KB) 建表语句.txt (551.6 KB)

写法1执行计划(2.5.21版本).txt (32.3 KB) 写法2执行计划(2.5.21版本).txt (32.0 KB) 写法2查询profile(2.5.21版本).txt (375.0 KB) 写法1查询profile(2.5.21版本).txt (363.8 KB)

在2.5.21版本现象类似,写法1耗时16s 写法2耗时2.9s

– 写法1 耗时26s
t.order_time >= cast(‘2024-05-28 00:00:00’ as datetime)
and t.order_time <= cast(‘2024-05-28 23:59:59’ as datetime)
– 写法2 耗时3s
t.order_time >= ‘20240528000000’
and t.order_time <= ‘20240528235959’

是什么原因造成呢?有结论了么?

还没有,工程师在联系RD看了

执行计划给的有问题,问题可能出在优化器,这3个SQL的explain costs 也发下吧。

分区裁减这里可能也有问题。

写法3执行计划cost.txt (208.8 KB) 写法2执行计划cost.txt (205.6 KB) 写法1执行计划cost.txt (208.7 KB)

大佬,请问下这个问题2.5.16有吗,我想升级到2.5.21版本

您当前什么版本,可以升级2.5.21,相较于其他2.5版本更稳定些,这个问题还需要确认下fix版本

当前是2.5.19 ,2.5.21现象差不多,2.5.21会快比较多,但是两种写法差距也比较大

请问大佬,这个问题在哪个版本会修复呢,现在升级到3.2.8出现同样的问题