首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql AUTO_INCREMENT是如何工作的?

问mysql AUTO_INCREMENT是如何工作的?
EN

Stack Overflow用户
提问于 2012-12-10 20:48:01
回答 2查看 144关注 0票数 1

在mysql AUTO_INCREMENT doc中,我没有找到关于如何在插入时选择新id详细说明,

它是缓存一个“最大数量”的键,还是找到一个最小的不使用的ID?有没有关于源代码的参考?

编辑:

我已经测试过了,看起来它不会重用已删除项的ID,但我不确定。我想使用id作为排序的时间戳,所以我必须100%确定它是这样的,这意味着这个逻辑解释应该有一个可信的引用,无论是在源代码中还是在mysql文档中。

EN

回答 2

Stack Overflow用户

发布于 2012-12-10 20:50:22

它不会选择未使用的最小数字。它将始终将1递增到它所分配的最后一个ID。这将是一个恒定的时间操作。(而不是选择没有使用的最小数字,这将是线性时间*)。

例如,如果插入10行,则删除第5行。下一个插入的行将获得ID 11,而不是5。

通过在删除时接受惩罚,可以非常容易地将该操作优化为恒定时间(在插入时)。然而,这并不是MySQL所做的。

票数 1
EN

Stack Overflow用户

发布于 2012-12-10 21:04:51

是的,这就是auto_increment的工作方式。

  • 对于每个新行,该值将递增
  • 该值是唯一的,不可能存在重复
  • 如果删除行,则该行的auto_increment列将不是唯一的。可以使用mySQL函数LAST_INSERT_ID()访问最后插入行的值,但必须在同一数据库连接中的插入查询之后立即调用该函数。

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

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

https://stackoverflow.com/questions/13801261

复制
相关文章

相似问题

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