2011-02-04 85 views
3

我有一个包含1,000,000条记录的表,我正在运行一条删除〜700k行的语句。自动增量指数当然仍然是1,000,001。之后的最高主键例如40,000。我应该重置表索引/删除多行后优化吗?

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

+1

重复使用身份证号码绝不是一个好主意,除非您确实非常少用可用ID。 – 2011-02-04 14:44:59

回答

2

MySQL的manual说:如果你 删除了表的一大部分

OPTIMIZE TABLE应使用 或者,如果你已经做了很多更改为 表可变长度行

但不要重置主键,它可以搞砸了。 INT数据类型(大概)有很大的增长空间,从1M增长。

在查询速度方面,不要紧的索引值是否为1 000 000或1 000 000 000

1

使用OPTIMIZE TABLE之后的MySQL有助于确定如何最好/最快的查询[执行,例如使用索引还是只是表扫描?它使用所谓的统计来做到这一点,因此调用OPTIMIZE TABLE基本上给它一个提示,即你已经做出了重大改变。