使用GUID作为主键的最佳实践是什么,特别是在性能方面?

使用GUID作为主键的最佳实践是什么,特别是在性能方面?

我有一个应用程序,它在几乎所有的表中都使用GUID作为主键,并且我读到了使用GUID作为主键时的性能问题。老实说,我还没有看到任何问题,但我即将启动一个新的应用程序,我仍然希望使用GUID作为主键,但我正在考虑使用一个复合主键(GUID,可能还有另一个字段)。

我使用GUID是因为当您有不同的环境(如“生产”、“测试”和“开发”数据库)以及在数据库之间迁移数据时,它们是很好而且易于管理的。

我将使用EntityFramework4.3,在将GUID插入数据库之前,我希望在应用程序代码中分配GUID。(也就是说,我不想让SQL生成GUID)。

创建基于GUID的主键的最佳实践是什么,以避免与此方法相关的假定性能命中?


FFIVE
浏览 1235回答 3
3回答

一只甜甜圈

我目前正在用EF Core开发一个Web应用程序,下面是我使用的模式:我所有的类(表)和一个intPK和FK。我还得到了一个带有Guid类型(由c#构造函数生成)的列,其中包含一个非聚集索引。EF中的所有表连接都是通过int键管理的,而来自外部(控制器)的所有访问都是用Guid完成的。该解决方案允许在URL上不显示int键,但使模型保持整洁和快速。
打开App,查看更多内容
随时随地看视频慕课网APP