我一团糟,想看看我能不能摆脱它。我有一个数据库,其中包含在 uniqueidentifier 列上定义的表上的所有主键。这有点强迫我们,将“安全”作为原因之一。另一个我认为比较有价值的原因是一些表参与了复制。
我正在审查数据库,我觉得一个很容易避免的未来性能瓶颈是可以在所有表中添加自动增量 bigint 列并使它们成为主键(集群)。并以某种方式正确地“附加” pk-fk 关系。但仍保留旧列以供将来使用。
在这方面有什么建议/意见/不建议吗?我们的是 ac#/MSSQL Server R2/Linq 环境。
编辑: 看评论,我意识到我遗漏了一些重要的细节。所有主键 Guid 字段都是集群的,不,我没有使用 newsequentialId(我们使用 Linq to SQL,主键是在客户端生成的。涉及复制时,我们不确定从不同客户端环境正确生成顺序 ID 的方法冲突)。
我的“感觉”是由于已知的事实,即 guid 列上的聚集索引会导致高度碎片化,并且只会随着数据库的增长而恶化情况。
另外,我现在并没有真正尝试优化,而是试图纠正一个糟糕的设计,以避免将来在数据库变得太大时出现问题。想知道现在是否值得这样做。