1
2
首先(出于好奇)当前模式如何指示当前版本?您是否有多个具有相同文档标题的“WikiDocument”条目? 最 Wiki中的“版本”只写一次:如果你修改了一个版本,那么你就是在创建一个新版本 刚出现的 实际上,你设计的“自然”模式是#2。就我个人而言,我有点喜欢旧的DB公理“规范化,直到它受伤,然后去规范化,直到它工作”#2是一个更干净、更好的设计(简单,没有重复),如果你没有迫切的理由去规范化到版本3,我就不麻烦了。 归根结底,归结到这一点:您是因为观察到性能问题而担心“更高性能”的设计,还是因为您假设 吃点吗?没有真正的理由,2号不应该表现出色。在SQL Server中,分组并不一定是坏消息——事实上,如果查询有一个合适的覆盖索引,它可以执行得非常好,因为它可以导航到索引中的某个特定级别以查找分组的值,然后使用索引的剩余列来使用最小/最大/任何值。按NVARCHAR进行分组并不特别糟糕——如果没有发现这是一个问题,不要担心,尽管(非二进制)排序规则可能会让它变得有点棘手——但在版本2中,您需要按WikiHeadId进行分组,可以按WikiHeadId进行分组,对吗? 如果在当前版本上执行大量操作(我假设您会这样做),则可以将FK从head表添加回body表,以指示当前版本,这可能会使工作更轻松。如果您想查看 当前版本 点击率最高的是#2,目前可能是:
这两个都很讨厌。如果WikiHead保留一个指向当前版本的指针,它只是
或者不管怎样,这可能是一个有用的非规范化,只是因为它使您的生活更轻松,而不是为了性能。 |
S. Jacson · 任意两台发电机的速度差(内置功能) 2 年前 |
Sadeq Dousti · 相当于“嵌套删除”的执行性能SQL查询 2 年前 |
Prince · 复制大型文件需要更多时间 2 年前 |
Sagar · 为什么在循环之外声明变量会更快? 2 年前 |
seco · 如何在不挂起页面的情况下加载JS 2 年前 |