嗨,我想知道对于您的记录必须是唯一的表的最佳做法是什么。我已经看到了两种方法:使用主键或向列添加唯一约束。
如果您使用主键,那么使用 varchar(*) 之类的主键是否是不好的做法?这对性能的影响是否足以导致问题?是否最好使用对用户名具有唯一约束的整数 id?
我看到了一些其他因素可能会影响选择列作为 PK 与 Unique。我对这些正确吗?
PK - 列应该是永远不需要更改的列
唯一 - 列可以稍后更改
嗨,我想知道对于您的记录必须是唯一的表的最佳做法是什么。我已经看到了两种方法:使用主键或向列添加唯一约束。
如果您使用主键,那么使用 varchar(*) 之类的主键是否是不好的做法?这对性能的影响是否足以导致问题?是否最好使用对用户名具有唯一约束的整数 id?
我看到了一些其他因素可能会影响选择列作为 PK 与 Unique。我对这些正确吗?
PK - 列应该是永远不需要更改的列
唯一 - 列可以稍后更改
在 UserName 上设置主键并不是最好的主意,但它的性能并没有您想象的那么糟糕。
最好的办法是使用 ID (INT) 作为 PRIMARY KEY,使用 UserName 作为 UNIQUE。
用户名会随着时间而变化,这就是为什么它们不适合进行 PK,尤其是因为您极有可能有与用户名相关联的子记录。例如,假设我的用户名包含我真实姓名的一些变体。如果我后来离婚并恢复了我的娘家姓,我最不想做的就是提醒我结婚的那个 SOB,所以我改变了我的用户名。你真的想改变我在过去十年中发布的 200 万个帖子吗?我不这么认为。
是的,字符串比较速度较慢,但这可能是也可能不是问题,具体取决于数据库将获得的总体操作量。少于 200 个用户的小型数据库,可能不是问题,拥有数百万用户的 Internet 站点,更可能是一个问题。