Sql OAuth使用者模型的主键

Sql OAuth使用者模型的主键,sql,sql-server,database,oauth,oauth-2.0,Sql,Sql Server,Database,Oauth,Oauth 2.0,我一生都在为我的实体使用自动递增主键值。也就是说,一个int主键 即使是现在,当我阅读关于使用什么作为主键的讨论时,获胜的小组总是支持int键的小组 但是,假设我想存储使用我的web服务的消费者列表。具体来说,是OAuth客户 将存储consumerId和ConsumerCret以及其他相关信息 现在,当用户注册为新消费者时,将生成consumerId。这个id应该是唯一的 在这种情况下使用int主键是否有优势?事实上,消费者在登录时会向我提供他们的id,而不是他们的int主键。因此,查询将使用

我一生都在为我的实体使用自动递增主键值。也就是说,一个
int
主键

即使是现在,当我阅读关于使用什么作为主键的讨论时,获胜的小组总是支持
int
键的小组

但是,假设我想存储使用我的web服务的消费者列表。具体来说,是OAuth客户

将存储
consumerId
ConsumerCret
以及其他相关信息

现在,当用户注册为新消费者时,将生成
consumerId
。这个
id
应该是唯一的

在这种情况下使用
int
主键是否有优势?事实上,消费者在登录时会向我提供他们的
id
,而不是他们的
int主键
。因此,查询将使用此
id
进行搜索

同样重要的是,这个
id
将具有64个字符的固定长度,因此索引应该比使用
nvarchar
更好

使用
nchar
主键的优点和缺点是什么


PS:我使用Microsoft SQL Server作为数据库引擎。

非数字主键会带来额外的开销

-->>>在搜索这张表格时,该引擎与特区政府进行比较所需的时间稍长

-->>>在任何DML(Insert、Update、Delete)期间,引擎可能需要对整个树进行洗牌以保持平衡,并且由于大数据类型的变化,可能会导致性能下降

但是在您的情况下,正如您所说,搜索将在
ConsumerID
上进行,将此列编入索引是有意义的。非聚集索引只会增加查找

我认为最好的选择是根本不去寻找索引,而是使用功能来搜索
ConsumerID
标记