首页 新闻 会员 周边

大数据量根据某字段值进行排名计算的效率问题

0
悬赏园豆:20 [待解决问题]

现在数据库中有这样的表结构,id(主键标示),rate(xx比率),totalrate(xx总比率),sequencerate(xx比率排名),sequencetotalrate(xx总比率排名)

最开始只能获得rate,totalrate,但数据量非常的大。

现在有这样的一个模型

RateInfo 

public class RateInfo(){
public int Id{get;set;}

public double Rate{get;set;}


public double TotalRate{get;set;}

public double SequenceRate{get;set;}

public double SequenceTotalRate{get;set;}

}

现在需要根据rate,totalrate进行排名的计算,不知道有什么好的方法可以进行计算排名后在将这些数据写如到表中。

我现在是只能先将计算到的rate,totalrate放入到List<RateInfo>后,在循环该list排序,排好序后在进行写入操作,但这样处理数据很耗费时间。每计算一个排名就要循环一次。

不知道各位对该问题该怎么处理。请不吝赐教!谢谢!

 

 

 

 

 


人土王的主页 人土王 | 初学一级 | 园豆:2
提问于:2011-10-17 17:40
< >
分享
所有回答(2)
0

不建议每次维护数据都去更新排名,即表中不需要后两个字段。读取时根据需要直接排名即可,数字型字段排序效率很高,必要时可以加索引。

CnSharp Studio | 园豆:255 (菜鸟二级) | 2011-10-17 20:26

谢谢你的建议。我先试试。

支持(0) 反对(0) 人土王 | 园豆:2 (初学一级) | 2011-10-18 09:34
0

呵呵,用 List<T> 自己进行排序,如果算法不好的话,建议你用 SortedList<T> 或者 SortedDictionary<T>。他们都实现了对Key的排序,用的时候一次遍历进行写入数据库。另外,同意楼上说的。

归真 | 园豆:605 (小虾三级) | 2011-10-18 17:01

很谢谢各位的回答。我测试测试相关排序所需要的时间。

支持(0) 反对(0) 人土王 | 园豆:2 (初学一级) | 2011-10-18 17:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册