【发布时间】:2014-02-15 03:14:26
【问题描述】:
上下文:连接到 Windows azure 移动服务的移动笔记应用程序。 (SQL Server Azure)
目前我有 2 个表:Users & Notes。
用户通过查询 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 (Primary Key)、SharedListMember.memberID、SharedListMember.list 上添加索引
问题: 我可以预期此设置对性能有多大影响?有更快的方法吗? 我目前在一秒钟内查询了大约 1000 条笔记。如果我有 1000 万张笔记会怎样?
【问题讨论】:
标签: sql sql-server database-design azure