在 MySQL 中重置 AUTO_INCRMENT 需要很长时间

发布于 2024-08-30 04:50:58 字数 109 浏览 1 评论 0原文

ALTER TABLE tablename AUTO_INCREMENT = 10000000

此查询需要很长时间才能更新。为什么?我需要优化这个查询。

ALTER TABLE tablename AUTO_INCREMENT = 10000000

This query is taking long time to update. Why? I need to optimize this query.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-09-06 04:50:58

ALTER TABLE 会导致整个表的重建 - 如果您的表包含许多行,这可能需要很长时间。

如果您只需要增加 auto_increment 值,最快的方法是插入一个虚拟行(然后根据需要删除该行)。这只需要几分之一秒的时间,而对于大型表来说 ALTER TABLE 可能需要几天的时间。

例如,假设我有一个表,其中包含 auto_increment ID 列和其他列 col1、col2...:

insert into autoinc_table set ID = 10000000;
delete from autoinc_table where ID = 10000000;

ALTER TABLE causes a rebuild of the entire table - if your table contains many rows,this can take ages.

If you just need to bump up the value of the auto_increment value, the quickest way is to insert a dummy row (and then delete that roow if need be). This will only take a fraction of a second, whereas ALTER TABLE can take days for a large table.

For example, suppose I have a table with an auto_increment ID column and other columns col1, col2...:

insert into autoinc_table set ID = 10000000;
delete from autoinc_table where ID = 10000000;
夏了南城 2024-09-06 04:50:58

用户和管理数据不能通过 id 来区分,而是通过另一个字段来区分。
如果您将 id 视为没有其他含义的抽象标识符,它将为您节省大量时间和资源,请相信我。

user and admin data must be distinguished not by id, but by another field.
If you would treat an id as an abstract identifier with no other meanings it will save you a lot of time and resources, trust me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文