2.5.10 复杂sqlExprComputeTime 耗时较长,请教优化手段

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】问题详细描述
复杂sql查询 ExprComputeTime 耗时比较长,通过调整pipeline和分桶都没法有效优化,不知道有没有什么其他的优化手段。


【背景】做过哪些操作?
【业务影响】
【StarRocks版本】例如:2.5.10
【集群规模】例如:1FE + 3BE
【机器信息】CPU虚拟核/内存/网卡,FE 16C 64G 200G SSD BE (32C 128G NVMe SSD 3.5T * 2)
【联系方式】社区3群-杨荣
【附件】

  • fe.log/beINFO/相应截图
  • 慢查询:

测试get_json_double是否会影响查询性能:

sql1: 单表查询一个sum(不带get_json_double的字段)
0.24 s 返回结果

sql2: 单表查询4个sum(不带get_json_double的字段)
0.08s 返回结果

sql3: 单表查询一个sum(带get_json_double 的字段)
2.84 s 返回结果
sql4: 单表查询2个sum(带get_json_double 的字段)
5.36s 返回结果
sql5: 单表查询3个sum(带get_json_double 的字段)
6.10s 返回结果
sql6: 单表查询4个sum(带get_json_double 的字段)
8.66 s 返回结果
sql7: 单表查询8个sum(带get_json_double 的字段)
16.60 s 返回结果

sql 对比发现,使用到get_json_double 字段的表达式查询较慢,且查询速度随着查询get_json_double字段的个数逐步递增

通过sql7 可以发现,复杂的sql的查询时间大多数都花在了处理get_json_double函数上
sql_test.sql (46.6 KB)

2.5 版本需要把json 字段入库的时候打宽,避免过多使用get_json_double函数
3.1版本可以使用 https://docs.mirrorship.cn/zh-cn/3.1/sql-reference/sql-statements/generated_columns 生成列功能进行优化

将字段类型从varchar(65535) 改成json 后,sql7 查询0.65就查询出来了,性能能满足用户需求。