【发布时间】:2016-02-09 01:29:43
【问题描述】:
对于大多数表的主键是 uuid 的应用程序,这些表上的聚集索引的最佳选择是什么?
- 需要聚集索引,因为后端数据库是 Azure SQL Server,而 Azure 需要聚集索引。
- uuid 是一种设计选择,可满足 n 个客户端在断开状态下创建实体并在连接时同步的需求。
- 我们没有使用主键作为聚集索引,以避免由于 uuid 的随机性导致的碎片问题。
考虑以下数据类型:
-
int或bigint。容易 - 可以自动递增(好/坏),但看起来如此随意且实用性有限。感觉最像黑客。 -
datetime- 增加的实用性 - 可以是createdOnServer列。但会导致一些欺骗,因此需要唯一符(这是一个多大的问题,我不知道) -
datetime2- 比datetime更宽,但精度更高,欺骗更少。
寻找最佳的 cmets、要考虑的事情或替代想法。
【问题讨论】:
-
如有疑问,请记住 KISS。选择简单的解决方案。
-
我不想告诉你——客户没有这个要求。如:一些开发人员不够聪明,无法将数据库端主键与基于 GUID 的人工行标识分开。你没有理由让 GUID 成为数据库端的主键。
标签: sql-server azure azure-sql-database