user1633146 Asked: 2020-01-17 07:32:16 +0800 CST2020-01-17 07:32:16 +0800 CST 2020-01-17 07:32:16 +0800 CST 表性能上的 GUID 与身份 [重复] 772 我的问题是使用 guid(数据类型唯一标识符)与使用身份规范(数据类型 int)。是否有任何文章谈论您为什么要使用一个与另一个?我在一家使用 guid 的新公司,它似乎慢了很多,但也许是我的想象。令人惊讶的是,这是我第一次看到它用于一行的唯一性。关于为什么要使用其中一个而不是另一个,您有什么帮助或想法吗? identity uuid 2 个回答 Voted Best Answer Jim G. 2020-01-17T15:23:03+08:002020-01-17T15:23:03+08:00 在某些情况下可能需要 GUID,但总的来说我建议不要这样做。主要原因是 GUID 本质上是随机的。因此,将它们用作标识列本质上意味着您正在随机存储行。使用典型的增量主键,数据是顺序的。表扫描通常更有效,等等。 最后,这两种情况都需要权衡取舍。Brent Ozar 有一篇关于该主题的旧文章: https ://www.brentozar.com/archive/2014/08/generating-identities/ kevinskio 2020-01-17T08:34:46+08:002020-01-17T08:34:46+08:00 我已经看到 GUID 用于担心有重复主键的情况。这通常出现在您将开发数据集成到 QA 或 SYSTEST 环境中的情况下。另一方面,我支持的一个 Opentext 应用程序只有一个整数序列,每个表都使用它。瞧……没有重复! 如果您从另一个使用 GUID 作为主键的来源(例如 MongoDb)引入数据,也可以使用它。 我的理解是,使用 GUID 作为主键比整数索引搜索成本更高。 Jeff Atwood在此处有一篇博文,其中包含更多详细信息。任何像这样的决定都应该有一个用例。通过使用或不使用 GUID,您不能做或可以做得更好的事情
在某些情况下可能需要 GUID,但总的来说我建议不要这样做。主要原因是 GUID 本质上是随机的。因此,将它们用作标识列本质上意味着您正在随机存储行。使用典型的增量主键,数据是顺序的。表扫描通常更有效,等等。
最后,这两种情况都需要权衡取舍。Brent Ozar 有一篇关于该主题的旧文章: https ://www.brentozar.com/archive/2014/08/generating-identities/
我已经看到 GUID 用于担心有重复主键的情况。这通常出现在您将开发数据集成到 QA 或 SYSTEST 环境中的情况下。另一方面,我支持的一个 Opentext 应用程序只有一个整数序列,每个表都使用它。瞧……没有重复!
如果您从另一个使用 GUID 作为主键的来源(例如 MongoDb)引入数据,也可以使用它。
我的理解是,使用 GUID 作为主键比整数索引搜索成本更高。
Jeff Atwood在此处有一篇博文,其中包含更多详细信息。任何像这样的决定都应该有一个用例。通过使用或不使用 GUID,您不能做或可以做得更好的事情