1

有没有一种方法可以按指定列(例如用户名)对表行进行排序,重新分配它的主键值,然后用排序值替换表内容?

4

1 回答 1

2

是的,MySQL 有一种方法可以确定文件中行的表排序。如果您的表是MyISAM类型,您可以运行:

ALTER TABLE `users` ORDER BY `username`;

该表现在将按用户名排序。这将修复文件中行的顺序,文件本身可能在文件系统中被碎片化,您无法使用ALTER TABLE来解决这个问题。从手册

ORDER BY 使您能够创建具有特定顺序的行的新表。请注意,插入和删除后,表不会保持此顺序。此选项主要在您知道大部分时间以特定顺序查询行时很有用。通过在对表进行重大更改后使用此选项,您可能可以获得更高的性能。在某些情况下,如果表按您稍后要对其排序的列进行排序,则可能会使 MySQL 更容易排序。

但是,如果您的意思是要重新排列数字主键,以便排序列表中的第一个用户将拥有 1、2 等,那么,请不要这样做。分配后切勿触摸主键。

于 2011-11-04T04:58:13.377 回答