请教一个insert语句的id问题

yalan 2017-03-03 04:54:15
有一个表,主键id自增,千万条数据,做过删除操作造成前几百万的id是空的,要再insert数万条数据,不想让id在自增而是使用前面未被使用id,有什么方法和语句吗?

总是担心数据超过无符号int类型的上限,也不想改id的字段类型为bigint等,请问有无好方法?
...全文
372 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yalan 2017-03-28
  • 打赏
  • 举报
回复
感谢大家热心解答,无论有无好的解决方案,能学习进步总是好的
zjcxc 2017-03-06
  • 打赏
  • 举报
回复
使用未使用的 id,效率会存在大问题,每次挺入都要去找一个未用 id, 数据量越大,这个查找的开销越大,所以是不推荐的 如果要实现,干脆不要用自增id, 自己写个函数或触发器 如果是大量的连续空闲想用起来,可以调整表的 auto_increment 值
bighoneybadger 2017-03-06
  • 打赏
  • 举报
回复
貌似没有好办法,同意一楼说法
yalan 2017-03-05
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
没有好办法。唯一能想到的办法就是直接修改MYSQL的源代码中auto_increment规则。 否则只能是 bigint ,或者不用 auto_increment而用触发器。
bigint的索引效率是个问题,万一系统运行时间长了,id真的超过了无符号bigint上限呢? 虽然知道我这种想法不太现实,但是还想研究下这种问题怎么破嘿嘿
yalan 2017-03-05
  • 打赏
  • 举报
回复
引用 2 楼 rucypli 的回复:
程序判断生成id插入
这个我想过,但是效率太低。 我知道分表可以解决问题,但是抱着学习的心态,我想知道在不分表的情况下这种问题怎么处理好呢
rucypli 2017-03-04
  • 打赏
  • 举报
回复
程序判断生成id插入
ACMAIN_CHM 2017-03-03
  • 打赏
  • 举报
回复
没有好办法。唯一能想到的办法就是直接修改MYSQL的源代码中auto_increment规则。 否则只能是 bigint ,或者不用 auto_increment而用触发器。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧