关注我们: 登录 |  会员中心  | 手机版 | English

你还没有登录 请先 登录 ,如果你还不是我们的会员, 请先注册 

中仿科技社区中心

目前SNS中的新鲜事实现方案

  发表时间 : 2010-07-09 16:23    所属类别 : 多物理场分析

我现在是这样设计的。大家看看是否可行。
一个是表 Feed:
字段有 [FeedID] ,[UserID] ,[FeedType] ,[FeedContent],[CreateTime],[EventId]
FeedContent就是新鲜事的内容。但用户有操作的时候都把内容格式好保存在这里面。EventId 是记录操作的记录ID(就是如果用户添加一篇文章,就把这文章的ID保存在这里,如果用户删除了这文章,就可以根据这ID来删除这Feed了。)
一个是用户的好友表 Friendship :
字段有 [UserId],[FriendId],[StateRefreshTime],其他。。。。

用户的每次操作,都更新Friendship里的StateRefreshTime 时间。

Feed的首页现在的SQL就是这样的了:
如首页显示30条记录:
SQL code 
SELECT top 30 [FeedID] ,[UserID] ,[FeedType] ,[FeedContent],[CreateTime]  FROM [rbg_Feed]   WHERE [UserID] IN (SELECT top 30 [FriendId] FROM [Friendship] WHERE [UserId]=1 ORDER BY StateRefreshTime DESC)

假设要查询的[UserId]=1,这样来不管用户有多少好友,就可以保证首页打开的速度了。

如果是第二页。就是在Friendship 表只读前60个最新更新的用户,然后在查出分页。
SELECT top 60 [FriendId] FROM [Friendship] WHERE [UserId]=1 ORDER BY StateRefreshTime DESC

担心的还是查询速度。后续验证了效率可以再加应用吧
分享到    豆瓣网 开心网 人人网 QQ书签 Google     3852个朋友已经阅读过这篇文章    

用户评论

姓名
评论内容
没有找到数据.
,


社区统计

  • 总注册用户: 339340
  • 新加入用户: RobertHoamn
  • 讨论区主题数: 6130(今日:0)
  • 讨论区回复数: 14757(今日:0)
    当前在线用户(0):