该说的你应该说啦.有一点补充说明的是,数据量大时,自动增量的效率优于uniqueidentifier很多.
自增量是数字型,在查询定位上是一个很高效的东西.自动增量的缺点也很明显,不能修改,无法控制生成的编号.
uniqueidentifier虽然避免了上述缺点,但检索速度慢是一个致使的缺点,36位的编码进行比较定位检索,很显然效率低,而且编码的可读性极差.我个人偏向于自动增量,或者自定义编号

解决方案 »

  1.   

    uniqueidentifier一般用全球同步号来标识ID,主要用于大量,并发性比较强的场合,全球同步号是硬件地址+cpu标识号+内部时钟频率及时点组成,任意时点上生成的ID肯定是唯一的。如果你特别要强调唯一性的可以用这个。
    一般情况下,使用IDENTITY,从效率和存储方面IDENTITY比uniqueidentifier有更大的优势
      

  2.   

    谢各位。
    IDENTITY 4 个字节, uniqueidentifier16个字节,100万行才多了12M 存储, 一个数据库系统里的大表通常就几个,至于可读性,对于历史类的数据,每个的主键对用户就应该是透明的, 我就是关心性能方面的影响在有多大,有人测试过吗?我觉得不明显,也许我的数据量不大。
      

  3.   

    你可以自己做过测试,建一个表,插入100万条uniqueidentifier做主键的检索,和标识做主键的.
    分别检索一下.
      

  4.   

    我做过测试,我的表中有将近1000万条记录,通过uniqueidentifier检索速度是比较慢,和检索其他字段(不包括text)字段速度相差非常明显