mysql 后续,添加自增序列字段

由于表前期设计没考虑到,后续数据增长的情况,没有给自增id字段。

当数据到达几百万时,分页会比较慢。(关键词,分页优化)

现在想着,加一个自增序列。

但已经有几十万数据,又想着按照某个字段的顺序,进行自增值的初始化。又不想通过额外的逻辑代码实现。


版本5.7 innodb引擎

我是这么做的:

-- 1、要改字段,先停应用

-- 2、增加主键
-- 2.1 修改字段类型,varchar(100) 改为 int(为了排序)
alter table t_bd_extension_show modify column showId int;
-- 2.2 修改表,添加showId字段为主键 (为了自增字段是按照主键从小到大的顺序,增长)
alter table t_bd_extension_show add primary key (showId);


-- 3、添加非主键,自增长字段
alter table t_bd_extension_show add column id BIGINT NOT NULL;
-- 设置key
alter table t_bd_extension_show ADD KEY key_t_bd_extension_show_id(id);
-- 改为自增id字段,自增的值默认是从1开始累加,每次+1
ALTER TABLE t_bd_extension_show MODIFY id BIGINT auto_increment;

-- 4、修改表,当前自增id值
-- 4.1 先查出目前最大值:150628
select max(id) from t_bd_extension_show;
-- 4.2 修改自增的目前起始值,等于目前的最大值,确保后续id连续增长
alter table t_bd_extension_show auto_increment=150628;


-- 5、还原主键字段
-- 5.1、删除主键
alter table t_bd_extension_show drop primary key;
-- 5.2、改回原来字段类型
alter table t_bd_extension_show modify column showId varchar(100);

通过这几步,就达到我的效果了。

mysql> select showId,id from t_bd_extension_show order by id desc limit 10;
+---------+--------+
| showId  | id     |
+---------+--------+
| 1839984 | 150628 |
| 1839982 | 150627 |
| 1839981 | 150626 |
| 1839979 | 150625 |
| 1839977 | 150624 |
| 1839976 | 150623 |
| 1839975 | 150622 |
| 1839974 | 150621 |
| 1839972 | 150620 |
| 1839970 | 150619 |
+---------+--------+

-- 按照showId从小到大排序的,自增id。
-- 当然主键这块,大家可以按照自己的逻辑调整,通常会使用时间之类的字段,记得最终还原主键的修改。

 

总的思路就是:

1、改变表的默认排序(这里是通过修改主键)

2、增加非主键,自增ID字段。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值