Rollup与查询

Rollup与查询

Rollup在查询中的作用:

  • 索引
  • 聚合数据(仅作用于聚合模型、即aggregate key)

但是为了命中Rollup需要满足一定的条件,并且可以通过执行计算中的ScanNode节点的PreAggregation的值来判断是否可以命中Rollup,以及Rollup字段判断命中的是哪一张Rollup表.

名次解释

Base:基表.
Rollup:一般指基于Base表创建的Rollup表,但在一些场景包括Base以及Rollup表.

索引

Doris会把Base/Rollup表中的前36个字节(有varchar类型的可能导致前缀索引不满36个字节,varchar会阶段前缀索引,并且最多使用varchar的20个字节)在底层底村引擎单独生成一份排序的稀疏索引数据(数据也是有排序的,用索引定位,然后在数据中做二分查找),然后在查询的时候会根据查询中的条件来匹配每个Base/Rollup的前缀索引,并选择出匹配前缀索引最长的一个Base/Rollup

聚合数据

要命中聚合物化视图需要下面一些前提:

  1. 查询或者自查询中涉及的所有列都存在一张独立的Rollup中;
  2. 如果查询或者自查询中有Join,则Join的类型需要是Inner join.

如果符合上述条件,则针对聚合模型在判断命中Rollup的时候会有两个阶段:

  1. 首先通过条件匹配出命中前缀索引最长的Rollup表;
  2. 然后比较Rollup行数,选择最小的一张Rollup.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值