ASP.NET Core Identity 主键性能问题

Taw*_*feh 1 asp.net-identity entity-framework-core .net-core asp.net-core

ASP.NET 核心的默认实现Guid用作用户和角色表的主键。

我在这里担心的是,在 DB 设计过程中,开发人员经常需要将实体链接到用户 ID 作为外键,例如添加ModifiedByCreatedBy列进行审计,在这种情况下,外键将nvarchar(450)是远非有效的int执行JOINs 和其他类型的查询时的主键。

我知道我可以将身份核心配置为使用自定义主键类型,例如int,但出于安全考虑,我是否应该坚持默认配置(我不是安全专家)?

JOINint外键相比,字符串外键上的 s也不是非常慢(加上主键是 an 的组合,nvarchar这使得情况更糟)?

PS:在 ASP.NET 核心的上下文之外,我一般不会首先使用代码或 EF

Chr*_*att 5

实际上,默认的 PK 类型是string. 它只是看起来像一个Guid. 无论如何,PK 本质上是一个索引列,因此它实际上是什么类型非常无关紧要。使用您喜欢的任何类型都没有安全问题,因此如果您更喜欢整数,请使用整数。或者,您实际上也可以使用 true Guid。在这种情况下,您将在数据库中得到一个 uniqueidentifier 列。长和短,这主要是您的个人喜好。不过,我确实倾向于使用整数。

  • 是的。这就是索引的全部意义所在。现在,您的数据库的整体大小可能会受到影响,但查询性能应该大致相同。 (2认同)