gpt4 book ai didi

database - "Group By"等数据库算法?

转载 作者:太空狗 更新时间:2023-10-30 01:49:10 24 4
gpt4 key购买 nike

我编写了一些非常基本的工具,用于对来自非数据库源(例如:CSV、OLTP 系统)的数据集进行分组、旋转、合并和小计。 “分组依据”方法是其中大部分方法的核心。

不过,我确信在制定高效的数据分组算法方面已经做了很多工作......而且我确信我没有使用它们。而我的 Google-fu 完全没有打开任何东西。

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

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

最佳答案

“按”某些字段(或一组字段和表达式,但为简单起见我将使用“字段”!-)“分组”的一种非常方便的方法是,您可以在分组前安排遍历结果 (RBG)以一种排序的方式——你实际上并不关心排序(除了常见的情况,在这种情况下 ORDER BY 也存在并且恰好与 GROUP BY 在同一字段上!-),而是关于排序的“副作用”属性——RBG 中具有相同分组字段值的所有行都紧随其后,因此您可以累积直到分组字段发生变化,然后发出/产生到目前为止累积的结果,然后继续用新行(具有不同分组字段值的行)重新初始化累加器——确保在一开始就“仅初始化累加器”,并在最后“仅发出/产生累积结果”,当然。

如果这不起作用,也许您可​​以散列分组字段并使用散列表来为该组累积结果——在 RBG 的每一行,散列分组字段,检查它是否已经存在哈希表中的一个键,如果没有将它与从 RBG 行适当初始化的累加器放在一起,则根据 RBG 行更新累加器。您只需在最后发出所有内容。问题当然是你占用了更多的内存直到最后!-)

这是两种基本方法。顺便说一句,你想要每一个的伪代码吗?

关于database - "Group By"等数据库算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1129276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com