上下文:连接到Windows Azure移动服务的移动笔记记录应用程序。(SQL Server Azure)
目前,我有2个表:Users&Notes。
用户通过查询Notes表并请求所有userID与自己的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个笔记。如果我有一千万张钞票会怎样?
使用此SQL查询,您可能不会注意到对1000万个笔记没有影响。
如果您的笔记包含附件和对数据库的SQL查询调用的延迟,则瓶颈将是带宽回到您的应用程序,因此请尽可能在本地缓存,并在应用程序中进行实际的Async调用。
这是一种情况,请不要过度优化不会引起问题的解决方案。SQL Azure经过高度优化,在某些表中有数百万行,并且查询返回的时间不到一秒钟,并且比上面显示的查询要复杂得多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句