GUID作主键的问题

详细讨论见 关于GUID的话题 ,这里仅作一份摘要。

普通的GUID的分散性使得如果主键加上聚集索引(Clustered Index)会导致在插入记录时效率大大降低,而且每几周就会出现因为松散的文件结构导致服务器必须重新整理的状况。
通常情况下,GUID作为主键,如果没有给表的其它字段加聚集索引(一个表只能有一个聚集索引),那么SQL Server就默认把主键作为聚集索引(当然,你也可以手指指定为非聚集索引),所以这就出现上面的问题 。
使用NEWSEQUENTIALID函数可以解决这个问题。MSDN的解释是:在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。
NEWSEQUENTIALID() 不能在查询中引用。即只能做为数据库列的DEFAULT VALUE,不能执行类似SELECT NEWSEQUENTIALID()的语句。
只有当计算机有网卡时,NEWSEQUENTIALID() 生成的GUID才是全球唯一的。
posted @ 2009-08-01 11:15  深圳大漠  阅读(324)  评论(0编辑  收藏  举报