代码之家  ›  专栏  ›  技术社区  ›  Chris Barry

为什么aspnet_users使用guid作为id而不是递增int?帮助扩展用户字段的奖励积分

  •  6
  • Chris Barry  · 技术社区  · 16 年前

    虽然我想使用int(感觉更容易进行用户查找,如stackovflow.com/users/12345/user-name),但由于我只需要用户名,我认为我不需要随身携带这个项目,当我需要查找用户int时,会增加查找的额外复杂性。

    2 回复  |  直到 16 年前
        1
  •  13
  •   Community Mohan Dere    9 年前

    它确保了跨断开连接的系统的唯一性。任何可能需要与另一个以前未连接的数据存储接口的数据存储都可能遇到冲突,例如它们都使用了 int

    严重的 具有任何实质性插入率的系统的页面碎片化。它可以通过使用newsequentialid()来纠正。我在 more detail here .

    一般来说,最佳做法是为GUID主键使用newsequentialid(),或者干脆不为主键使用GUID。您始终可以有一个存储GUID的辅助索引列,您可以使用它来保持引用的唯一性。

        2
  •  5
  •   marc_s MisterSmith    16 年前

    如果你想为主键使用GUID(正如Rex M.指出的那样,它们确实有一些很好的用途——主要是在复制场景中),那么可以,但一定要在SQL Server中使用INT IDENTITY列作为集群键,以尽量减少索引碎片,从而减少性能损失。

    基本上,她发表过的任何东西 her blog

    推荐文章