【问题标题】:Sharing a table row between users in SqlServer Azure在 Sql Server Azure 中的用户之间共享表行
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-31
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      相关资源
      最近更新 更多