【发布时间】:2018-07-03 07:26:42
【问题描述】:
我认为这是不可能的,但我在这里要求确定。
以下是我的想法:
- 我想插入许多行并为它们生成 id(使用自动增量)
- 众所周知,1) 不索引,插入并在插入完成后添加索引,比 2) 先创建索引并插入要快。这是因为插入期间的索引开销
由于我正在执行插入...选择,我无法从应用程序生成 ID。
所以,基本上,完美的做法是拥有一个不需要索引的自动增量。
我不明白为什么mysql需要一个索引来实现自增?不能简单地存储最后插入的 id 然后递增它吗?
欢迎任何意见!
【问题讨论】:
-
必须将 auto_increment 字段定义为主键 - 这是一个规则。
-
您可以在
insert ... select中生成数字。您真的确定这是您的性能问题吗? -
@P.Salmon 这实际上是不正确的。只需要一个索引。你不需要PK。然后,我问为什么这是一个规则。如果您阅读了我的问题,那么我知道这一点是微不足道的……抱歉粗鲁^^
-
@juergend 您是否建议类似“INSERT ... SELECT \@id = \@id + 1”?我认为这将是一个选择!我们正在处理大量的数据插入,所以如果它们可以通过索引后速度提高 10%... 我正在寻找所有优化 ;-)
-
@Vincent Pazeller 感谢您的更正。
标签: mysql auto-increment