"分组依据"和其他数据库算法?

Mar*_*old 6 database algorithm

我已经编写了一些非常基本的工具,用于对来自非数据库源(例如:CSV,OLTP系统)的数据集进行分组,旋转,联合和小计."分组依据"方法是大多数方法的核心.

但是我确信在制作分组数据的高效算法方面已经做了很多工作......而且我确定我没有使用它们.而我的Google-fu完全没有提供任何帮助.

是否有任何好的在线资源或书籍描述了创建分组数据的更好方法?

或者我应该开始查看MySQL源代码或类似的东西?

Ale*_*lli 5

一个非常方便的方法来"分组"一些字段(或一组字段和表达式,但我会简单地使用"字段"!)是你可以安排在分组(RBG)之前遍历结果方式 - 你实际上并不关心排序(除了常见的情况,其中ORDER BY也在那里,恰好与GROUP BY在同一个领域! - ),而是关于"副作用" "排序的属性 - RBG中具有相同值的分组字段中的所有行都是相继的,因此您可以累积直到分组字段更改,然后发出/生成到目前为止累积的结果,然后继续重新初始化具有新行的累加器(具有不同的分组字段值的那个) - 确保在开始时"刚刚初始化累加器",当然,最后"只发出/产生累积结果".

如果这不起作用,也许你可以散列分组字段并使用哈希表来为该组累积的结果 - 在RBG的每一行,散列分组字段,检查它是否已作为密钥存在哈希表,如果没有将其与RBG行适当初始化的累加器放在那里,否则按RBG行更新累加器.你最后只发出一切.问题当然是你要占用更多的内存直到最后! - )

这是两种基本方法.你想要每个伪代码,BTW?