mysql数据库里有自增字段,就是每添加一条记录,自增id会自动加1,
比如我有20条记录,id依次为1,2,3,...20 删掉10,11,...20,我知道
不能随便改自增字段id的值,删后中间就空出一些数字,再加记录时,id便
自动设为21,22,....此时表中的字段id为:1,2,...8,9,21,22,...
如果我的系统在日常使用中经常有删除、添加记录的操作,那么删掉的
id都是前面的数字,新增的id都是后面的数字。。过很久后,id的值会非常大,
可前面的数字却空着并未使用,这样一来随着时间的推移,id总会有崩溃的那天
吧,因为id是int,int型字段的字节数是固定,有个最大整数值是它的上限。
这个问题怎么解决?难道用自增字段的系统只要经常增删改查,尤其存储
记录量较多时,过些时间系统一定崩溃?
比如我有20条记录,id依次为1,2,3,...20 删掉10,11,...20,我知道
不能随便改自增字段id的值,删后中间就空出一些数字,再加记录时,id便
自动设为21,22,....此时表中的字段id为:1,2,...8,9,21,22,...
如果我的系统在日常使用中经常有删除、添加记录的操作,那么删掉的
id都是前面的数字,新增的id都是后面的数字。。过很久后,id的值会非常大,
可前面的数字却空着并未使用,这样一来随着时间的推移,id总会有崩溃的那天
吧,因为id是int,int型字段的字节数是固定,有个最大整数值是它的上限。
这个问题怎么解决?难道用自增字段的系统只要经常增删改查,尤其存储
记录量较多时,过些时间系统一定崩溃?
+----------------+
| auto_increment |
+----------------+
| 23 |
+----------------+
1 row in set (0.02 sec)
找到id没有的值 在插入 但是这种方法很不实用
一个表如果太大了 就没什么意义了 可以做两张表或者多张表存储数据
这个就是前面说的表设计组织考虑问题了,举个例子吧,我以前处理过的一个有一定数据量的系统,一天产生的新数据几亿条吧,也有自增id,如果像你这么说,把数据都往一个表里面对的话,肯定是不可行的(首先不考虑自增id超出范围的角度,最少进行业务处理时就有相当多问题),我那时采用了历史数据分表分区,当然啦,入库源表还可以考虑利用oracle的sequence的循环属性处理,这就是一种表设计的逻辑处理方法,当然啦,具体应用具体分析啦。