我们有一个系统,使用UniqueIdentifier作 for each 表的主键.我们注意到这是个坏主意.我也看到过类似的帖子,但我对MS SQL的性能以及由于这个决定而可能遇到的其他潜在问题感兴趣.

推荐答案

这是有利有弊的:

This article美元涵盖一切.

GUID专业人士

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

GUID Cons

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

Database相关问答推荐

任何必要的可空外键示例?

术语 SSTable 和 LSM Tree 有什么区别

有没有办法为 2 个具有不同包名称的应用程序提供 1 个 Firebase 数据库?

PostgreSQL Clob 数据类型

WAMP 的 MySQL 数据库文件位于何处?

在迁移中添加行

使 H2 将引用的名称和未引用的名称视为相同

ODBC 与 JDBC 与 ADO.NET

NameError:设置更改为 mysql 后未定义名称_mysql

数据库设计—应该避免一对一的关系吗?

South migration error: NoMigrations exception for django.contrib.auth

用 Python 永久存储字典的优雅方式?

为什么在 Hibernate 中不推荐hibernate.connection.autocommit = true?

我什么时候应该考虑使用内存数据库,需要注意什么问题?

有人可以详细解释 SOLR requestHandlers 和 responseWriters 吗?

如何使用 MySQL Workbench 架构差异两个数据库?

使用 PHP/PDO 判断数据库表是否存在

用 SQL 进行条件插入?

最佳用户角色权限数据库设计实践?

在具有所需 ForeignKey 引用的 Django (1.8) 应用程序之间移动模型