MySQL: физическая сортировка

#mysql #sorting #autonumber

#mysql #сортировка #автономер

Вопрос:

Есть ли способ, которым я могу отсортировать строки таблицы по указанному столбцу (например, имя пользователя), переназначить его значения первичного ключа, а затем заменить содержимое таблицы отсортированными значениями?

Комментарии:

1. Почему на этой земле вы смотрите из «Физической сортировки»? Как вы думаете, содержимое любого файла всегда находится на жестком диске в том же порядке, который вы видите при его открытии?

2. @JhourladEstrella Я голосую за тебя. Это максимум, что я могу сделать здесь для вас 🙂

Ответ №1:

Да, у MySQL есть способ определить табличную сортировку строк в файле. Если ваша таблица относится к типу MyISAM, вы можете запустить:

 ALTER TABLE `users` ORDER BY `username`;
  

Теперь таблица будет отсортирована по имени пользователя. Это исправит порядок строк в файле, сам файл может быть фрагментирован в файловой системе, и вы не можете решить эту проблему с помощью ALTER TABLE. Из руководства:

ORDER BY позволяет создать новую таблицу со строками в определенном порядке. Обратите внимание, что таблица не остается в этом порядке после вставок и удалений. Эта опция полезна в первую очередь, когда вы знаете, что большую часть времени вам нужно запрашивать строки в определенном порядке. Используя эту опцию после внесения существенных изменений в таблицу, вы можете получить более высокую производительность. В некоторых случаях MySQL может упростить сортировку, если таблица упорядочена по столбцу, по которому вы хотите упорядочить ее позже.

Однако, если вы имеете в виду, что хотите изменить числовой первичный ключ, чтобы у первого пользователя в отсортированном списке было 1, 2 и так далее, тогда просто не делайте этого. Никогда не прикасайтесь к первичным ключам после назначения.