根据AVG()函数 排序,然后分页 得问题?

baohua700 2007-03-17 12:43:42
我用的是 SQL Server 2000 ,

shopinfo(id,name,address,phone,type,city,region) 商家表
shopcomment(id,shopid,userid,rate,publishtime) 用户评论表
userinfo(userid,username,password) 用户表

现在要根据 (SELECT AVG(Rate*1.0) FROM ShopComment WHERE ShopId=ShopInfo.Id) AS Rate 得值 排序 shopinfo

就是根据不同用户的平均打分 从高到底 排序 商家 ,还要分页,(我用的是aspnetpager)也是问题?

现在只有 10000个商家 ,10000个打分 就很慢呢?

怎么 能够承受到 200000商家 ,5000000个用户打分呢?怎么优化呢?
...全文
231 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
comszsoft 2007-03-21
  • 打赏
  • 举报
回复
按照楼上的思路,如果有必要再加个作业定时校正一下数据就可以了。如果每次都AVG()你的数据库会down掉的。
netcoder 2007-03-19
  • 打赏
  • 举报
回复
(1)你在商家表里加一个 平均分(或者两个字段:评论数和总分) 字段,或者加一个表专门保存商家的平均分

(2)这个平均分字段每次有用户打分后重新计算

这样每次排序时就不用再统计了
baohua700 2007-03-19
  • 打赏
  • 举报
回复
到底有什么好的方法阿? 提高性能的!
新鲜鱼排 2007-03-17
  • 打赏
  • 举报
回复
逻辑就是这样也没有办法,可以使用视图来定义固定数据集。

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧