Mysql 如何重新计算主索引?
我在mysql数据库中有一个带有自动递增主键的表。定期删除并添加此表中的行。因此,结果是最近一行的PK值增长非常快,但该表中没有那么多行 我想做的是以这种方式“重新计算”PK,第一行的PK=1,第二行的PK=2,依此类推。此表的PK没有外部依赖项,因此它是“安全的” 是否仅使用mysql查询/工具就可以完成?或者我必须从我的代码中执行它?Mysql 如何重新计算主索引?,mysql,Mysql,我在mysql数据库中有一个带有自动递增主键的表。定期删除并添加此表中的行。因此,结果是最近一行的PK值增长非常快,但该表中没有那么多行 我想做的是以这种方式“重新计算”PK,第一行的PK=1,第二行的PK=2,依此类推。此表的PK没有外部依赖项,因此它是“安全的” 是否仅使用mysql查询/工具就可以完成?或者我必须从我的代码中执行它?set@pk:=0; set @pk:=0; update your_table set pk=@pk:=@pk+1 order by pk;
set@pk:=0;
set @pk:=0;
update
your_table
set pk=@pk:=@pk+1
order by pk; <-- order by original pk
更新
你的桌子
设置pk=@pk:=@pk+1
按主键排序 这将解决您的问题:
简而言之:您可以使用ALTER TABLE\u tablename AUTO\u INCREMENT=1。若要将其重置为1,应首先从表中删除记录,或将其id更改为最低值。重新计算后,不要忘记更改表中的自动增量值:
mysql> SELECT @pk;
+------+
| @pk |
+------+
| 9911 |
+------+
1 row in set (0.00 sec)
ALTER TABLE your_table AUTO_INCREMENT = 9912;
当没有“PK的外部依赖性”时,为什么需要索引?