这是我的问题:我为什么要在表格中使用自动增量字段作为主键,而不是像UUID值那样?
一个人的主要优势是什么?他们有什么问题和优势?
答案 0 :(得分:8)
简单数字消耗的空间更少。 UUID值每个消耗128位。使用数字也更简单。对于大多数实际用途,32位或64位整数可以很好地作为主键。 2 64 是一个非常大的数字。
占用更少的空间不仅节省硬盘空间意味着更快的备份,更好的连接性能,以及在数据库服务器内存中缓存更多真实内容。
答案 1 :(得分:4)
您不必使用自动递增主键,但我确实如此。这就是原因。
首先,如果您使用的是int,则它们比UUID小。
其次,使用ints查询比使用UUID更容易,特别是如果您的主键在其他表中作为外键出现。
另外,请考虑您将在任何数据访问层中编写的代码。我的很多构造函数都将一个id作为int。它很干净,并且使用像C#这样的类型安全的语言 - 在编译时捕获任何问题。
自动提升机的缺点?潜在的空间不足。我现在有一张200米的桌子。如果我原样离开,它将在一年内破灭20亿的限制。
你也可以说自动增量id没有内在含义,但UUID也是如此。
答案 2 :(得分:3)
我猜UUID你的意思是GUID?稍后您必须合并表时,GUID会更好。例如,如果您有遍布全球的本地数据库,则每个数据库都可以为行标识符生成唯一的GUID。之后,数据可以合并到一个数据库中,并且id不应该冲突。在这种情况下,如果使用自动增量,则必须使用复合键,其中键的另一半标识原始位置,或者在将数据导入主数据库时必须修改ID。