gpt4 book ai didi

sql-server - Asp.net identity : Why the index is on GUID (nvarchar)? 使用 int 有什么好处/缺点?

转载 作者:行者123 更新时间:2023-12-05 04:02:22 27 4
gpt4 key购买 nike

当我使用 Visual Studio 2017 生成 MVC.NET 时,它会生成一些表 AspNetUsers、AspNetRoles 等...

如果您查看已生成的 Id,它们都在 nvarchar(128) 中并且值只是 GUID。

我的直接 react 是将其更改为 int,但我认为 Microsoft 一定有充分的理由使用 GUID 而不是 int。但是谷歌搜索,我找不到答案。

现在,我明白了为什么它将所有 ID 存储为 nvarchar(128),这是因为并非所有数据库都具有字段类型 GUID。但是我找不到使用 GUID 和 int 的好处。

进一步上网搜索,找到这篇文章:GUIDs as PRIMARY KEYs and/or the clustering key .现在,听起来 GUID 可能是一个糟糕的选择。

我处于早期阶段,所以我还需要从 GUID 更改为 int。但是使用 int 而不是 GUID 是否有任何真正的缺点(和/或好处)?

感谢您的帮助...

最佳答案

互联网上已经就此问题进行了大量讨论。这确实是一个永无止境的辩论/话题,因为 int/longGUID 作为主键各有利弊。

GUID vs INT Debate是关于这个主题的精彩文章。

你也可以看看Why is ASP.NET Identity 2.0 using a GUID/string as user id?

除了这些文章讨论之外,我可以向您推荐几件事:

  1. 默认情况下,SQL Server 主键是集群键,除非您明确告诉它不要这样做,否则在 GUID 主键的情况下会导致性能下降。如果考虑到这一点,则不要选择 GUID 作为主键。

  2. 如果您认为您的主键不作为唯一标识符就没有特殊意义,请选择 GUID 作为主键。

  3. 如果您需要有意义且可读的主键,请选择 int/long 作为主键。

如果您选择 GUID 作为您的主要,那么您可以查看 What are the best practices for using a GUID as a primary key, specifically regarding performance?

关于sql-server - Asp.net identity : Why the index is on GUID (nvarchar)? 使用 int 有什么好处/缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54384354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com