是否可以在';删除的mysql是什么?

是否可以在';删除的mysql是什么?,mysql,auto-increment,Mysql,Auto Increment,所以我对这个问题也有同样的问题 根据这个答案,考虑到这个答案中提供的每个条件,我不得不说我必须在mysql上执行删除后的自动递增 我有桌子,让我们说吧 table : product fields : id, name 如果我的id是16,17,18,然后我删除了id 16,然后我做了一个新的,我想让新的id在“16”而不是19。根据这个答案 Take a step back and ask "why you need to recycle key values?" Do

所以我对这个问题也有同样的问题

根据这个答案,考虑到这个答案中提供的每个条件,我不得不说我必须在mysql上执行删除后的自动递增

我有桌子,让我们说吧

table : product
fields : id, name
如果我的id是16,17,18,然后我删除了id 16,然后我做了一个新的,我想让新的id在“16”而不是19。根据这个答案

Take a step back and ask "why you need to recycle key values?" Do unsigned INT (or BIGINT) not provide a large enough key space?
我必须说是的,有可能字段不能提供足够大的键空间

我该怎么办

注意:该表上的id是唯一的,没有连接到任何其他表,我只是想避免如果id不能再次提供足够大的键空间

如何实现? 老实说,这是可以实现的。每次删除记录时,将其对应的id值插入到有序队列中,并将队列中最小的值作为要插入的id(如果队列为空,则使用数据库生成的id)

值得做吗? 我假设您的主键是
id
,whcih是mysql中的聚集索引。因此,这种方式可能会导致更多的页面拆分,从而降低插入性能。
并且您需要确保有序队列中的id只能由一个插入线程同时使用。如果插入失败,则需要重新排队id。如果有序队列的大小过大,排序操作也会降低性能。

最后,您不能依赖id进行分析。带有max id的记录是最新记录。

不要这样做。这看起来是一个进入兔子洞的好主意……那么最好的解决方案是什么?我真的想把id的类型从int(10)改为bigint吗?如果你真的达到了20亿个产品,你会有完全其他的问题,比如性能的伸缩性等等,注意int声明后面括号中的数字几乎完全没有意义“值得做吗?”不。