如何重新计算主要指数?

时间:2011-01-05 08:42:27

标签: mysql

我在mysql数据库中有自动增量PRIMARY KEY的表。定期删除此表中的行并添加。因此结果是最新行的PK值正在快速增长,但此表中没有那么多行。

我想做的是以这种方式“重新计算”PK,第一行有PK = 1,第二行PK = 2,依此类推。该表的PK没有外部依赖关系,所以它是“安全的”。

无论如何它只能使用mysql查询/工具完成吗?或者我必须从我的代码中做到这一点?

3 个答案:

答案 0 :(得分:11)

set @pk:=0;

update 
  your_table
  set pk=@pk:=@pk+1
  order by pk;       <-- order by original pk

在我看来,拥有一个很大的代理键很好。您可能不太可能用完所有允许的最大整数。考虑一下你可以使用unsigned加倍。

答案 1 :(得分:0)

重新计算后,不要忘记更改表格中的AUTO_INCREMENT值:

mysql> SELECT @pk;
+------+
| @pk  |
+------+
| 9911 |
+------+
1 row in set (0.00 sec)


ALTER TABLE your_table AUTO_INCREMENT = 9912;

答案 2 :(得分:-1)

这可以解决您的问题:http://www.liewcf.com/mysql-reset-auto-increament-number-115/ 简而言之:您可以使用ALTER TABLE table_tablename AUTO_INCREMENT = 1.要将其重置为1,您应首先从表中删除记录或将其ID更改为最低值。