物化视图查询改写不及预期,查询效率明显下降

【详述】对基表创建小时粒度的同步物化视图和天粒度的异步物化视图,使用DATE_TRUNC函数对基表按天聚合查询指标,查询耗时长达82s,通过explain查看发现两个问题,一是查询时把所有的字段都引用了,但实际查询只需要一个时间维度(天)和两个指标;二是应该可以走天粒度物化视图和小时粒度物化视图的,结果走基表查询
【是否存算分离】否
【StarRocks版本】3.3.4
【集群规模】1fe + 3be
【机器信息】fe 8c 16G * 1 + be 64C 128G * 3
【相关信息】
建表语句

同步物化视图语句

异步物化视图

当前异步物化视图分区刷新情况

查询语句
WITH qu_0 AS (
SELECT DATE_TRUNC(‘day’, ta_0.data_date) AS co_1,
COALESCE(SUM(ta_0.ssp_req), 0) AS co_0,
COALESCE(SUM(ta_0.dsp_req), 0) AS co_2
FROM adx.mammut_adx_slot_pkg_hi AS ta_0
WHERE ta_0.data_date >= ‘2024-10-05 00:00:00’
AND ta_0.data_date < ‘2024-10-07 00:00:00’
GROUP BY DATE_TRUNC(‘day’, ta_0.data_date)
)
SELECT ta_1.co_1 AS co_3,
ta_1.co_0 AS co_4,
ta_1.co_2 AS co_5
FROM qu_0 AS ta_1
WHERE ta_1.co_1 IS NOT NULL
LIMIT 1000

查询计划



如果按天聚合改成按小时聚合可以命中同步物化视图

看下 trace 结果中 改写失败的原因https://docs.starrocks.io/zh/docs/using_starrocks/async_mv/troubleshooting_asynchronous_materialized_views/#%E7%89%A9%E5%8C%96%E8%A7%86%E5%9B%BE%E6%97%A0%E6%B3%95%E6%94%B9%E5%86%99%E6%9F%A5%E8%AF%A2

应该物化视图改写是有问题的,使用trace logs返回改写成功的,但是实际查询的时候没有做改写,如果查询返回的结果要正确的话,只是使用物化视图的数据计算结果是错误的


我这个问题的场景是基表是分钟表或小时表,物化视图是天粒度的分区表,更新频率是一天更新一次;比如14号8点查询13号至14号的数据,此时物化视图最新一次刷新成功的时间是14号1:30分,那么物化视图刷新成功的数据有13号完整一天的数据和14号0点-1:30分的数据,当你在14号8点查询的时候使用expain和trace logs都显示改写成功,但实际查询的时候没有走物化视图,这里没走物化视图走了基表查询,但没有必要把所有的字段都检索一遍,最后再返回需要字段的数据,这慢的主要原因。下面分别物化视图查询改写开和关前后查询速度对比