1

什么更有效(更快):将相同的推文存储在Tweet表中两次,一次user1又一次用于user2或使用之间的连接TweetFriend获得结果?

Tweet => Id
         UserId
         SenderId
         JSONdata

User =>  Id

Friend => UserId 
          FriendId 

加入:

SELECT TOP 20 a.* FROM Tweet a INNER JOIN Friend b ON a.SenderId = b.UserId WHERE b.UserId = {0} 

或者我可以为发送者和接收者保存两次推文并使用一个简单的查询:

SELECT TOP 20 * FROM TWEET WHERE UserId = {0}

哪个更快,如果加入,那么我应该使用什么类型的索引,我很乐意听到任何建议。

谢谢

4

1 回答 1

0

仅将数据存储一次(推文),您将不会遇到任何一致性问题。除非您将其开发为重型 OLAP 系统(即数据仓库),否则您应该进行规范化。

于 2012-06-03T20:01:38.643 回答