Mysql 删除多行后是否应重置表索引/优化?

Mysql 删除多行后是否应重置表索引/优化?,mysql,optimization,indexing,sql-delete,Mysql,Optimization,Indexing,Sql Delete,我有一个有1000000条记录的表,我正在运行一个删除700k行的语句。当然,自增指数仍然是1000001。之后的最高主键,例如40000 在大量删除行之后,我应该手动将索引设置回40001还是以任何方式优化表?或者,MySQL在插入新行并随后在select语句中使用索引时(就速度而言),不关心这个巨大的差距吗?MySQL说: 如果需要,则应使用优化表 删除了表的大部分 或者,如果您对 具有可变长度行的表 但是不要重置主键,它会把事情搞砸的。INT数据类型(大概)有很大的增长空间 就查询速度而言

我有一个有1000000条记录的表,我正在运行一个删除700k行的语句。当然,自增指数仍然是1000001。之后的最高主键,例如40000

在大量删除行之后,我应该手动将索引设置回40001还是以任何方式优化表?或者,MySQL在插入新行并随后在select语句中使用索引时(就速度而言),不关心这个巨大的差距吗?

MySQL说:

如果需要,则应使用优化表 删除了表的大部分 或者,如果您对 具有可变长度行的表

但是不要重置主键,它会把事情搞砸的。INT数据类型(大概)有很大的增长空间


就查询速度而言,索引值是1 000 000还是1 000 000并不重要。

之后使用OPTIMIZE TABLE可帮助MySQL确定查询的最佳/最快速度,例如使用索引还是只扫描表?它使用所谓的统计信息来实现这一点,因此调用OPTIMIZE TABLE基本上是给它一个提示,表明您已经做了重大的更改。

除非您的可用ID非常非常少,否则重新使用ID号从来都不是一个好主意。@Matti:即使如此,对ID列使用不同的数据类型,例如bigint,可能更好(当然没有签名)为了防止与先前删除的密钥发生冲突……嗯……我想你是对的,一般来说,重新使用主键似乎是个坏主意。