我觉得还是identity的方法更好,当然,前提是identity能满足需求的。sql server提供的identity的性能肯定是更好。而通过创建一个表,里面存储了表名这个表中的当前id值,当有多个表,而每个表有多个线程,都需要取currentval,可能会导致性能问题

解决方案 »

  1.   

    identity 简单方便,而自己维护sequence也是可以的,事实上不少项目就采用后者。。
      

  2.   

    如果按第二中方式生成的标识列在删除的时候也会出现数据空缺,因为currentval只记录最大标识
      

  3.   

    第二种方法是通过代码来维护数据库的自增性,因为同一时刻获取的最大id是同一个,所以并发下面可能比较好,单纯的Identity的自增方法满足不了高并发下的ID维护
      

  4.   

    第2中方法有以下好处:
    1、可以防止由于删除数据导致原有ID资源的浪费,为空掉很多ID
    2、可以提高并发性,例如如果批量插入数据,那么可以在ID表中也采用批量插入的方式插入ID
    3、ID类型的选择也多样化,不像自增长只能是整型