id 为主键且自增,由于数据表数据删除等问题,id 会断续 我查到几条命令可以搞,但是总不能每次删除后再执行下这个命令吧 所以有没有一次性修改好的办法呢?
1
msg7086 2019-12-04 07:00:37 +08:00
id 原本就是一条记录的固定标识,原本就不应该被修改。
修改 id 本来就相当于重新建表了(因为所有的关联表都会炸)。 如果你需要一个连续的 id,那就不应该去用自增主键。自增主键本来就会变得不连续。 |
2
opengps 2019-12-04 07:24:32 +08:00 via Android
程序处理,不用自增
|
3
JiShuTui 2019-12-04 08:29:54 +08:00 via Android 2
请说出你的最原始需求来,可能你对需求理解有误。
活了三十年,第一次听说有人想改 id,而且改 id 的目的竟然是为了 id 连续。 |
4
lhx2008 2019-12-04 08:30:33 +08:00 via Android
可能只是强迫症了吧
|
5
littlemoney 2019-12-04 09:11:11 +08:00 via Android
id 不连续的问题是啥呢?
|
6
qping 2019-12-04 09:22:26 +08:00
如果你的需求是:根据连续的 id 可以知道某一个记录的上一条或者下一条记录,比如博客上一篇或者下一篇功能。
不应该修改 id,而是额外增加一个字段,存储连续的字段。 或者在一条记录中记录上一条或者下一条是记录是什么。 |
7
qping 2019-12-04 09:25:16 +08:00 2
一般 id 是聚簇索引,是数据记录真实写入到硬盘的位置,修改某一条记录的 id 会导致这条记录之后全部的数据都被移动重写,导致巨大的磁盘 IO,是很恐怖的想法
|
8
fancy111 2019-12-04 09:29:41 +08:00
很简单的问题,你需要完全连续的话,每次删除记录好被删的 ID,下次添加记录的时候写死 ID 插入,之后再删除这个记录就好。无记录的情况下自增。
|
9
Woood 2019-12-04 09:34:18 +08:00
你为什么删除的时候不假删除呢
|
10
DeweyLiu0 2019-12-04 09:34:54 +08:00 via Android
曾经我也有过这样的强迫症😄然后就思考为什么新创建的不是接着上面的呢?
|
11
jeymingwu 2019-12-04 09:36:33 +08:00
盲猜是在前端展示更美观?
|
12
agee 2019-12-04 09:39:19 +08:00 via iPhone
展示 id 为什么要和数据库 id 一致,新加一个用于展示的字段不就好了,还能卖靓号♞
|
13
SjwNo1 2019-12-04 09:43:54 +08:00
物理删除可还行
|
14
ShundL 2019-12-04 09:44:53 +08:00
搞个 redis list 保存已删除的 id,每次删除时把 Id 放到 list 里,下次要插入时优先从 list 里取, 哈哈哈哈哈哈。。。
|
15
Egfly 2019-12-04 09:45:29 +08:00
不知道你的需求是什么,改 id 会带来大量的磁盘 IO,除非你这里的 id 不是索引。建议去看一下[mysql 索引原理]( https://juejin.im/post/5bd7a97de51d45400d5d7b18)。
|
16
hoythan 2019-12-04 10:57:50 +08:00
吧 ID 一列删除,重新添加一列 ID,可以重置所有的 ID 顺序,简单明了,赶紧试试吧。
|
17
gebishushu OP |
18
opengps 2019-12-04 12:33:43 +08:00
ID 该有还得有,额外增加一个程序递增排序列实现吧
|
19
optional 2019-12-04 12:36:17 +08:00
一般人想要递增非连续的 id
|
20
godwinma 2019-12-04 14:36:49 +08:00
你这想法,纯属强迫症作祟,何必呢? id 连续除了带来更复杂的东西,额外收益是什么?
|
21
lxk11153 2019-12-04 16:10:39 +08:00
递增连续 id 还容易被暴力爬~
|
22
ipwx 2019-12-04 16:13:31 +08:00
|
23
arthas2234 2019-12-04 16:17:11 +08:00
@lxk11153 这个我还真见过,很久之前了,发现一个论坛的获取用户信息的 url 是 /users/{id},id 是个三位数字,我就好奇是不是自增的。结果还真是,而且还没做鉴权,拿到一堆用户信息,不过就是一个小论坛估计是学生搞得
|