MySQL: физическая сортировка - PullRequest
1 голос
/ 04 ноября 2011

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

1 Ответ

2 голосов
/ 04 ноября 2011

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

ALTER TABLE `users` ORDER BY `username`;

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

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

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

...