UNIQUEIDENTIFIER做主键(Primary Key)是一件很方便的事情,在数据合并等操作中有不可替代的优势 但是由于普通的GUID的分散性使得如果主键加上聚集索引(Clustered Index)会导致在插入记录时效率大大降低 SQL SERVER 2005中新增了一个NEWSEQUENTIALID的函数,MSDN的解释是: 在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。 NEWSEQUENTIALID() 不能在查询中引用。 注:即只能做为数据库列的DEFAULT VALUE,不能执行类似SELECT NEWSEQUENTIALID()的语句 只有当计算机没有网卡时,NEWSEQUENTIALID() 生成的 GUID 才在该特定计算机中是唯一的。 注:这句话是错误的,应该是只有只有当计算机有网卡时,生成的GUID才是全球唯一 您可以使用 NEWSEQUENTIALID() 生成 GUID 以减少叶级别索引上的页争用。 但是使用NEWSEQUENTIALID却不是那么一帆风顺 1. 如何获得生成的GUID 如果生成的GUID所在字段做为外键要被其他表使用,我们就需要得到这个生成的值 通常,PK是一个IDENTITY字段,我们可以在INSERT之后执行 SELECT SCOPE_IDENTITY()来获得新生成的ID 但是由于NEWSEQUENTIALID()不是一个INDETITY类型,这个办法是做不到了,而他本身又只能在默认值中使用,不可以事先SELECT好再插入,那么我们如何得到呢?有以下两种方法:
昵称: [登录] [注册]
主页:
邮箱:(仅博主可见)
验证码: 看不清,换一个
评论内容:
登录 注册
[使用Ctrl+Enter键快速提交评论]