我有自动增量主键的MySQL数据库中的表。定期将这个表中的行删除并添加。所以结果是最新一行的PK值增长得非常快,但这个表中没有太多的行。如何重新计算主索引?
我想要做的是以这种方式“重新计算”PK,即第一行有PK = 1,第二个PK = 2等等。此表没有外部依赖关系,所以它会是“安全的”。
是否有反正它只能使用mysql查询/工具?或者我必须从我的代码中完成它?
我有自动增量主键的MySQL数据库中的表。定期将这个表中的行删除并添加。所以结果是最新一行的PK值增长得非常快,但这个表中没有太多的行。如何重新计算主索引?
我想要做的是以这种方式“重新计算”PK,即第一行有PK = 1,第二个PK = 2等等。此表没有外部依赖关系,所以它会是“安全的”。
是否有反正它只能使用mysql查询/工具?或者我必须从我的代码中完成它?
set @pk:=0;
update
your_table
set [email protected]:[email protected]+1
order by pk; <-- order by original pk
在我看来,有一个大的代理键是好的。你可能不太可能用完所有允许的最大整数。考虑一下,你可以使用unsigned来将它加倍。
这应该解决您的问题:http://www.liewcf.com/mysql-reset-auto-increament-number-115/ 总之:你可以使用ALTER TABLE table_tablename AUTO_INCREMENT = 1。为了重置为1,你应该先删除表中的记录或改变他们的ID来最低值。
不要忘了重新计算后更改表中的AUTO_INCREMENT值:
mysql> SELECT @pk;
+------+
| @pk |
+------+
| 9911 |
+------+
1 row in set (0.00 sec)
ALTER TABLE your_table AUTO_INCREMENT = 9912;
当没有“上PK外部依赖”,为什么你需要一个指数? – Simon 2011-01-05 08:46:44