为简单起见,假设我在 Sql Server 中有一个表“Car”。它有 2 列。“Id”是唯一标识符/Guid,是主键。“名称”是一个 nvarchar/字符串。该数据库将用于轻度使用的应用程序,该应用程序的峰值可能为 10 个并发用户。“汽车”可能有数千行。它将被定期查询、插入和更新。
我知道在 Guid 列上有一个聚集索引通常是不好的,所以我的计划是将表保留为堆并且没有聚集索引。我会在 Id 上有一个非聚集索引。
在这个非常简单的场景中,我有什么理由会后悔没有聚集索引?如果你说是,请解释你的答案背后的原因。我看过人们说“我添加一个 int 列只是为了添加一个聚集索引”的帖子。如果您不打算查询 int 列,我无法弄清楚为什么有人会这样做,它会增加什么价值?
同样对于这个例子,请假设 newsequentialid() 不是一个选项。我首先使用实体框架模型,使用起来很痛苦(除非有人能指出一种我错过的简单方法)。还假设 Guid PK 是一项要求(它是现有系统)。