我一生都在为我的实体使用自动增量主键值。也就是说,int
主键。
即使是现在,当我阅读有关使用什么作为主键的讨论时,获胜组始终是支持int
键的组。
但是,我想假设我要存储使用我的网络服务的消费者列表。 OAuth客户,具体而言。
将存储consumerId
和consumerSecret
以及其他相关信息。
现在,当用户注册为新的消费者时,将生成consumerId
。此id
应该是唯一。
在这种情况下使用int
主键是否有优势?事实上,消费者在登录时会向我提供id
,而不是他们的int primary key
。因此,查询将使用此id
进行搜索。
另外,作为一个重要提示,此id
的固定长度为64个字符,因此索引应该比使用nvarchar
更好。
nchar
主键有哪些优点和缺点?
PS :我使用Microsoft SQL Server作为数据库引擎。
答案 0 :(得分:0)
非数字主键带来额外的开销。
- >>>在此表上执行搜索时,引擎会在与SARG进行比较时花费少时间。
- >>>在任何DML(插入,更新,删除)期间,整个树可能需要由引擎进行洗牌以保持平衡,并且由于大量数据类型的混乱,可能会导致性能下降。
在您的情况下 但是,如您所说,搜索将在ConsumerID
上,将此列编入索引是有意义的。非聚簇索引只会导致查找增加。
我看到的最好的选择是根本不去索引,而是使用Full Text Search功能来搜索ConsumerID
令牌。