Vis*_*er7 5 mysql database auto-increment
我的数据库中有这个列.假设它的名字是'threadid'.它包含为每个线程分配的唯一ID.
threadid 9 8 7 6 5 4 3 2 1
假设我删除了ID为5和6的线程.
threadid 9 8 7 4 3 2 1
但是当删除后有一个提交时,给该线程的唯一ID是10.不是5.我认为这不是很整洁.
如何在列中获得尽可能少的值?(在这种情况下,5.)
我想我可以使用MIN()获得列的最小值并保持+1,直到我得到未使用的唯一值,但我认为这太复杂了.
有没有简单的方法来做到这一点?
谢谢.
Wol*_*ang 19
MySQL 4294967295中的最大INT数,如果每分钟创建1000个线程,则每天需要1440000(1000 x 60 x 24)个id.所以在大约8.17年后你会用完ids.
BIGINT的最大数量为18446744073709551615,这将是足以创造每分钟10亿(1十亿)的id为35096年.
因此,你可以随心所欲地浪费id而不用担心它们.
我同意其他人的意见,实现你自己找到最小的开放数字是一个非常糟糕的主意.但是在我工作的地方,我们会得到一组封闭的数字,当数字空闲时,我们必须重复使用.
这是我们如何做到的.
我们不删除行,但是将每列的所有值都设置为null,那么你要做的是SELECT min(id)WHERE columnA IS NULL,如果这返回了什么,我们重用,否则,插入一个新行.