一尘不染

在MS SQL中使用GUID作为主键是一个坏主意吗?

sql

我们有一个使用UniqueIdentifier作为每个表的主键的系统。已经提请我们注意,这是一个坏主意。我在该主题上看到过类似的帖子,但是我对任何MS
SQL性能以及由于此决定而可能遇到的其他潜在问题感兴趣。


阅读 168

收藏
2021-03-17

共1个答案

一尘不染

有优点和缺点:

本文涵盖了所有内容。

GUID优点

  • 在每个表,每个数据库,每个服务器中都是唯一的
  • 允许轻松合并来自不同数据库的记录
  • 允许在多个服务器之间轻松分发数据库
  • 您可以在任何地方生成ID,而不必往返于数据库
  • 大多数复制方案仍然需要GUID列

GUID缺点

  • 它比传统的4字节索引值大4倍;如果您不小心,可能会对性能和存储造成严重影响
  • 调试麻烦(其中userid =’{BAE7DF4-DDF-3RG-5TY3E3RF456AS10}’)
  • 生成的GUID应该是部分顺序的,以实现最佳性能(例如,SQL 2005上的newsequentialid())并允许使用聚簇索引
2021-03-17