拉萨市网站建设_网站建设公司_门户网站_seo优化
2025/12/26 17:42:06 网站建设 项目流程

问题:

遇到一个奇怪的问题,SQL执行正常,但如果查询的时间段超过一个月则执行报错。

环境信息

select current_version() as version;
-- 3.3.20-1.3.0-202512081638-7f00bc3

查询SQL如下

whit data_top as (select * from table_name where day between '2025-01-01' and '2025-02-01'--    and rn <= 20
)
,data_cte2 as (
select count(1) as cnt data_top where rn <= 20
)
select data_cte2
limit 10
;

报错信息如下

TASK-MESSAGE: 
FAILED: no executable plan for this sql. group: ->  Group: 87
{root group 87 root operator: LogicalCTEAnchorOperator{cteId='1'} child: 5, 86}. required property: EMPTY SORT, EMPTY DISTRIBUTION, EMPTY CTE

排查原因

-- 设置这个参数后可正常执行
SET  cbo_cte_reuse = false;

设置此参数后可正常查询出结果,查看官方文档,可见是CTE在BE中的缓存,默认只有512M,可推测出是因为CTE超过512M导致OOM,从而时间段短时正常,时间段长时SQL执行则报错。
优化方面:减少CTE中数据量,在CTE中汇总后再查询和关联。
https://docs.starrocks.io/zh/docs/3.3/using_starrocks/caching/query_cache/#采用-cte-优化的-distinct-查询不使用-query-cache
image

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询