我们有一个数据库,其中所有的 PK 都是 GUID,大多数 PK 也是表的聚集索引。我们知道这很糟糕(由于 GUID 的随机性)。因此,这里似乎基本上有两种选择(没有将 GUID 作为 PK 完全丢弃,这是我们不能做的(至少目前不是))。
- 我们可以将 GUID 生成算法更改为例如 NHibernate 使用的算法,如本文所述,或者
- 对于使用最频繁的表,我们可以更改为不同的聚集索引,例如 IDENTITY 列,并将“随机”GUID 保留为 PK。
在这种情况下是否可以给出任何一般性建议?
有问题的应用程序有 500 多个表,目前最大的一个大约有 150 万行,一些表大约 500 000 行,其余的则显着减少(其中大多数远低于 10K)。
此外,该应用程序已经安装在多个客户站点,因此我们必须考虑对现有客户可能产生的任何负面影响。
谢谢!