【发布时间】:2012-04-07 16:13:09
【问题描述】:
我有一个表评分
- row1 = (V1, K1, 5);
- row2 = (V2, K2, 7);
- row2 = (V1, K1, 3);
我需要聚合 AggregateRating 表中的点 使得表格包含
- row1 = (V1, K1, 8);
- row2 = (V2, K2, 7);
我在评级表中循环一次,然后 使用 [key = (Col1,Col2), value = Points] 创建地图 如果密钥存在,我添加点,否则创建一个新的地图条目。 评级表可以包含近 100 多个条目,因此我想避免多次通过。
这是最有效的方法吗?
【问题讨论】:
-
除非
+中的100+并不意味着数十亿,否则您应该按照您的建议坚持干净高效的实现。很少需要最最有效的解决方案。 -
@Howard 您指的是哪种更有效的解决方案?顺便说一句,如果查询进行了 10 亿次,那么将其复杂性降低 100 倍可能很重要。
-
@Boris 正是我的意思。 “最高效”和“现实世界中的高效”是有区别的。各种“肮脏”的东西,比如预取、缓存线的大小……都在起作用。如果您拥有数十亿范围内的数据,但对于
100+而言,这很重要。在这个区域,您应该使解决方案简单易懂 - 即对编码人员和所有其他阅读您的代码的人来说是高效的(当然不会不必要地损害系统的性能)。
标签: performance algorithm aggregation