2014-02-15 27 views
1

上下文:移动笔记应用程序连接到Windows Azure移动服务。 (Sql Server Azure)在SqlServer中的用户之间共享表格行Azure

目前我有2个表:用户&注意事项。

用户通过查询Notes表并询问具有与其自身相匹配的用户ID的所有备注来下载其各自的备注。
例子:

SELECT * FROM Notes WHERE userID = myID; 

但现在我希望我的用户能够在它们之间分享笔记,所以......

我想增加一个“SharedList” &“SharedListMember”表,其中每个笔记将在SharedListMember子表上与其各自的共享成员共享一个列表。

例子:

SELECT DISTINCT n.* FROM Notes n LEFT OUTER JOIN SharedList l ON n.list = l.id INNER JOIN SharedListMember lm ON l.id = lm.list WHERE (lm.memberID = myID OR n.userID = myID) 

我添加了一个LEFT OUTER JOIN,因为不是所有的任务将被共享。

我会在Notes.list,SharedList.id(主键),SharedListMember.memberID添加索引,SharedListMember.list

问题: 我多少对性能的影响可以期待与此设置?有更快的方法吗? 我目前在不到一秒的时间内查询了大约1000个笔记。如果我有1000万笔记,会发生什么?

回答

1

使用此SQL查询,您可能会注意到1000万个备注没有影响。

如果您的笔记包含SQL查询调用数据库的附件和延迟,那么您的瓶颈将带宽返回到您的应用程序,所以如果可以,请在本地缓存,并在应用程序中尽可能进行异步调用。

这是一个不要试图过度优化不会导致问题的解决方案的情况。 SQL Azure经过高度优化,我的一些表中有数百万行,查询返回的时间不到一秒,比上面显示的要复杂得多。