日期:2014-05-18  浏览次数:20630 次

做主键用int增长好,还是用uniqueident(newid())好
求解:
做主键用int增长好,还是用uniqueident(newid())好

------解决方案--------------------
uniqueidentifier 数据类型的主要优点是保证newid函数生成的值在全球是唯一的
如果全球唯一性并不是必须的,或者需要一个连续递增的键,可以考虑使用identity属性
uniqueidentifier 数值类型有以下缺点:
值长且难懂,用户不便于记忆和使用(键入值的时候都比较容易出错)
这些值是随机的,而且他们不能接受任何使它们对用户变得有意义的模式
没有任何方式可以决定生成 uniqueidentifier 值的顺序,它们不适用于那些依赖递增的键值东东
虽然uniqueidentifier 数据类型具有16个字节,比4字节的证书相比要大一些,所以uniqueidentifier键建立的索引可能会比int键实现的索引要慢


------解决方案--------------------
1、在uniqueidentifier 建索引,索引太宽
2、uniqueidentifier 不是单调递增的,经常会产生页拆分

所以最好在int上建索引,详细说明请见:

http://tuolang2006.spaces.live.com/

标题为《SQLServer数据库索引性能监控列表》的文章

------解决方案--------------------
对比 int 和 uniqueidentifier
uniqueidentifier的主要优点除了保证值在全球唯一以外,
还有它的值产生在插入之前,而非插入之后才能取得。