/*存储主要数据,数据量大,id为主键*/
/*表以检索为主,数据插入不频繁,删除不频繁*/
create table main_table
(
id int(10)  zerofill  not null auto_increment primary key,
name varchar(50) default ''
);/*存储被删除数据id*/
create table deleted_id_table
(
id int(10)  zerofill  not null primary key
);数据:
id  name
1   ...
2   ...
3   ...
........场景:
默认情况下,main_table的id是一直递增的,即使删除id=2的数据,insert(null,'data')还是按递增进行,这样之前被删除数据的id不能利用,所以我想获得一个产生随机id,不产生冗余,高效的算法.id不超出最大值
我的算法:
1.delete main_table数据
当删除id = 2的数据,id=2 insert into deleted_id_table
2.insert main_table数据
检索deleted_id_table信息
if (count(deleted_id_table) > 0)
{
    取deleted_id_table.top=1的数据id作为inert into values(id,'data');
    delete from deleted_id_table where id='2';
}
else
    insert(null, 'data');
注:我个人认为,增加deleted_id_table存储被删除数据,不会增加太大存储开销,只是数据从main_table转移到delete main_table而已。因为表是检索为主,deleted_id_table数据不会太大,main_table一执行insert操作,deleted_id_table数据的数据就被删除.count(deleted_id_table)效率几乎可以忽略。整个执行是在一个事务中执行.
以上是我的个人看法,欢迎各位指正,给出更好的算法。