首页 > MySQL > 流聚合算法

流聚合算法

来源:原创 作者:thomas 分类:MySQL 阅读:847 日期:2014-05-31

MySQL数据库仅支持流聚合,其他数据库可能会支持散列聚合。

流聚合算法的伪代码:

sort result according to group by columns
foreach row in result:
begin
    if the row does not match the current group by columns
    begin
        print current aggregate results
        clear current aggregate results
        set current group by columns to input row
    end
    update aggregate results with input row
end
根据分组列对结果进行排序
遍历排序后的结果:
开始
    如果当前遍历行和当前分组列不匹配
    开始
        输出当前分组列的聚合结果
        清除当前分组列的聚合结果
        设置当前分组列为遍历行
    结束
    否则使用当前遍历行更新聚合结果
结束

示例:

结果:

分析:

当对分组后的结果计算最大值时,流聚合会考虑每个遍历行,如果遍历行属于当前的分组列,则流聚合可通过判断当前分组的MAX值与该遍历行的值进行比较来更新当前分组的MAX值;如果遍历行不属于当前的分组,则输出当前分组的MAX值,并把遍历行作为新的分组,同时将分组的MAX值设为该遍历行的值。

对上述示例查看执行计划,可看到使用了文件排序。

十日谈技术博客

 

热门文章 更多>

微信扫一扫,关注技术十日谈