首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何重用auto_increment值?

如何重用auto_increment值?
EN

Stack Overflow用户
提问于 2012-03-16 19:06:35
回答 5查看 6.8K关注 0票数 8

可能重复:

Fragmentation of id's (auto_increment column) in mysql

我的数据库里有这个专栏。让我们假设它的名字是‘三重’。它包含给每个线程的唯一It以进行区分。

6 5 4 3 2 1

假设我删除了id 5和6的线程。

9 8 7 4 3 2

但是当删除后有一个提交时,给这个线程的唯一id是10。而不是5。我认为这是不整洁的。

如何在列中获得尽可能少的值?(在这种情况下,5.)

我认为我可以使用MIN()获得列的最小值,并保留+1,直到得到未使用的唯一值为止,但我认为这太复杂了。

有什么简单的方法吗?

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-16 19:19:55

我同意其他人的意见,在实现自己的查找最小开放数是一个非常糟糕的想法。但是在我工作的地方,我们会得到一组封闭的数字,当一个数字被释放时,我们必须重新使用。

我们是怎么做到的。

我们不删除该行,而是设置每个列空的所有值,因此您要做的是选择min(id),其中columnA是空的,如果这返回了什么,我们就重用,否则,插入一个新的行。

票数 9
EN

Stack Overflow用户

发布于 2012-03-16 19:22:11

MySQL 4294967295中INT的最大数量--如果您每分钟创建1000个线程--每天需要1440000 (1000x60x24)id。大约8.17年后你就会用完身份证了。

BIGINT的最大数量为18446744073709551615,这足以为35 096年创建每分钟1000000000(10亿)个ids。

因此,您应该可以随意浪费ids,而不必担心它们。

票数 23
EN

Stack Overflow用户

发布于 2012-03-16 19:09:56

帮你自己个忙忘掉这件事吧。这将是一个巨大的痛苦实施,因此,除非有一个非常迫切的目标,这是不能接近的,否则(不可能),我们谈论的是巨大的痛苦,没有任何好处。

MySql本身不支持这个场景正是因为这个原因:巨大的复杂性而没有任何好处。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9743121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档