是否可以在删除mysql的地方使用最后一个id? 如何实现?这值得吗?

问题描述

所以我对这个问题Auto Increment after delete in MySQL

有相同的问题

并根据该答案,并考虑该答案提供的每种条件,我必须说,我必须在删除MysqL后执行自动递增操作。

我有桌子可以说

table : product
fields : id,name

因此,如果我的ID为16,17,18,然后我删除了ID 16,并重新创建一个ID,那么我想根据该答案将新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,这是mysql中的聚集索引。因此,这种方式可能会导致更多的页面拆分,从而降低插入性能。
并且需要确保有序队列中的id只能被一个插入线程同时使用。如果插入失败,则需要重新排队该id。如果有序队列的大小太大,排序操作也会降低性能。
最后,您不能依靠id进行分析。例如。具有最大id的记录是最新记录。