我现在是这样设计的。大家看看是否可行。 一个是表 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个朋友已经阅读过这篇文章
用户评论
没有找到数据. , |