数据库表,很多都有一个ID这个字段,
大家是使用一个自增长的ID,还是定义一个ID,然后自己控制ID增长?
若是自己控制,一般如何控制?

解决方案 »

  1.   

    自增: 很方便,因为不需要人为干预。但如果数据量变动很大,如经常删除,增加数据,那么id就会变成无穷增大,肯定存在隐患。因为删除了的记录它的id不会被重新分配。自己控制ID增长:能清楚的知道id的趋势,并且能在缢出时可以加以控制。
      

  2.   

    to 自己控制ID增长
    一般如何生成新的ID?
      

  3.   

    to 自己控制ID增长
    一般如何生成新的ID?
    -------------------------------
    去表里取最大ID,然后加步长(如1)就是新ID.
      

  4.   

    to 去表里取最大ID,然后加步长(如1)就是新ID.
    若表中数据比较大,如有十几万条数据,通过MAX操作获取新的ID的方法好像会比较慢。
      

  5.   

    to 去表里取最大ID,然后加步长(如1)就是新ID.
    若表中数据比较大,如有十几万条数据,通过MAX操作获取新的ID的方法好像会比较慢。
    可以获取14位或者更多位的一个随即数,然后再与某些特定的字符一起组成。
    以前我基本上是这样实现的。
      

  6.   

    to 看你的数据量和是什么类型的数据操作了,如果是数据量很大而且是数据密集型的数据应用,就建议你自己控制id,这样比较自由,如果不是很大就直接设自增变量就中了。我赞成,数据量少不用提了,自增或自己控制都不会有什么问题。量大,自增省事,但自己不可控,不塌实。:)to 可以获取14位或者更多位的一个随即数,然后再与某些特定的字符一起组成。
    以前我基本上是这样实现的。确保ID唯一性的方法在哪?随机生成数,可能会有重复。
      

  7.   

    自己控制增长字段的标准写法:
    增加一个表记录当前需要申请ID表的详细情况.如表名employee,字段名EID,当前值1,增长频率1,最小值1,最大值99999.
    每次申请去这个表取得.同时该表相应记录被增长.(建议存储过程去做)
    ==============================================================
    优点:在前端每次新申请都会得到一个最新的未被占用的ID.效率较高(除自增长字段方法以外)
    缺点:如果申请了没有使用该ID.那么该ID就会被浪费.对于表的ID字段有少许冗余.建议使用自增长字段.安全方便.
      

  8.   

    to wooting
    你这种方法我以前用过,不过没有你考虑的周到,当时我只是通过存储过程记录该表的最大ID.谢谢各位的建议。我还是赶紧结贴,人再一多,分太少,都不好意思分给大家了 :)