在数据库上生成主键或在应用程序代码中生成主键时,尤其是在为键使用GUID/UniqueIdentifier数据类型时,“更好”是什么?在数据库中创建Guid PK。代码
我已经阅读了使用Guid和int数据类型之间的区别,它听起来像Guids对于所谓的“离线生成”是可行的。
E.g.
而不是在数据库中有一个NEWID()
contstraint。在一个项目中(我们使用实体框架),我们在应用程序代码Guid.NewGuid()
中使用插入数据时生成PK。
这是一个坏方法吗?
我的担忧是:
- 数据库索引:数据库性能,因为标识的可能不是连续
- ,关键是已经使用了一个64十亿机会。 (考虑到应用不会很大,但可能需要增长空间)
- 也许还有其他缺点?
是的我知道NEWSEQUENTIALID()对不起这就是我的意思是“NEWID()”这并不真正对我的问题说,是在数据库中还是在代码中创建更好,或者可以在代码中创建吗? – John 2012-03-13 08:13:05
我认为可以在代码中创建。据我所知,guid是基于服务器的时间,MAC地址或IP地址(不确定)生成的。想不出任何关键的区别。 :) – fengd 2012-03-13 08:23:04