聚合函数没有下推到tikv 层?

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:V3.0.15
  • 【问题描述】:聚合函数没有下推到tikv 层,而是在tidb层进行的,强制制定 /+ AGG_TO_COP()/ 也没有用?
    SELECT /+ AGG_TO_COP()/ id, code,
    COUNT(1)
    FROM T1
    WHERE ENDDATE >= 20150106 AND ENDDATE <= 20201013
    AND serid= 3 group by id, code

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出打印结果,请务必全选并复制粘贴上传。

看了下,4.0 开始才有的这个hint,不过为什么默认不加的话,聚合不下推到tikv层?

聚合函数下推的话,需要 tikv 中先实现对应的逻辑才可以下推
比如 AVG() 这种函数,没有下推之前 tikv 只需要将查询结果集返回给 tidb 就可以,tidb 自己会处理计算平均数,如果下推的话需要 tikv 在查询数据的时候实现平均数计算的逻辑,返回结果只需要返回一个(sum,count) 就可以了。

目前tikv支持哪些函数? count() 这种都没支持嘛

TiKV 中的 coprocessor 能支持大部分 SQL 内建函数(包括聚合函数和标量函数)、SQL LIMIT 操作、索引扫描和表扫描。但是,所有的 Join 操作都只能作为 root task 在 TiDB 上执行

count 应该是支持的函数,问题是没有下推

可以手动 analyze table 一下收集一下统计信息再查询看下么

另外 id,code 这个 group by 条件是否带有唯一键或者主键,如果有带的话,那是不需要进行聚合下推的,因为本身索引具有唯一性故统计请求与 行扫描请求等价

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。