SQL Server - 为我的表选择主键

Nul*_*ead 3 sql-server indexing performance database-design primary-key

我有一个存储用户信息的表.
在用户表中,用户名是唯一的.你认为我应该将用户名作为主键,还是应该使用int的代理键?
使用字符串键会严重影响性能吗?

Mit*_*eat 9

使用代理整数键.

用户名不会经常改变,但他们可以.

至于性能,在你知道自己遇到问题之前不要担心.

默认情况下,SQL Server将在主键列上创建聚簇索引.如果在聚簇索引中使用宽键,则所有非聚簇索引也将包含该宽键.


DJ *_*mby 6

通常使用int作为主键.这部分是由于约定以及在其他表中将它们用作外键时节省空间.实际上,使用您的用户名字段作为主要字符不会影响性能,除非您最终使用它在多个表中拥有数千条记录.如果您认为您的牌桌将保持较小,则可以优先考虑.