在SqlServer Azure中的用户之间共享表行

时间:2014-02-15 03:14:27

标签: sql sql-server database-design azure

上下文:连接到Windows Azure移动服务的移动笔记应用程序。 (Sql Server 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 个答案:

答案 0 :(得分:1)

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

如果您的笔记包含附件和SQL查询调用数据库的延迟,那么您的瓶颈就会带回您的应用程序,因此如果可以,请在本地缓存并在应用程序中的实际情况下进行异步调用。

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