我有一张这样的表
user(#id, login, password)
但我想让它像
一样user(#login, password)
因为每个用户的登录都是唯一的
我想知道这是否是一个很好的解决方案?它会影响具有长char(索引)的主键的速度(性能)吗?
答案 0 :(得分:0)
这总是一个有趣的问题。这实际上是数据库设计中的一个长期争论,“自然”与“代理”键。
由于这个问题并不完全重复,我会给出一个答案,但也有一些链接到核心问题,因为它已经很好地覆盖了。
与大多数数据库性能问题一样,它最终取决于。 :)
如果您的登录时间很短和/或您没有大量登录,则可能与整数键没有太大区别。
您可能还会考虑是否允许某人更改其登录信息......如果是这样,您将需要代理整数来保留密钥。
有关这方面的更多信息,以及其他一些人对性能的测试:
Deciding between an artificial primary key and a natural key for a Products table
答案 1 :(得分:-1)
永远不要使用char或varchar主键。
使用自增量标识作为PK(tinyint,smallint,int或甚至bigint),这将用于链接到其他表作为其FK并且将更快。
如果登录字段常用,您仍然可以在登录字段中创建唯一的非聚集索引。