Причина, по которой это происходит так медленно, заключается в том, что таблица изменения использует «Восстановление с помощью кеша ключей» для построения индекса. Это строит индекс, добавляя одну запись за раз в индекс.
Гораздо более быстрый способ - использовать «Ремонт с сортировкой». Тем не менее, MySQL должен иметь много памяти и временного дискового пространства для этой работы, и что обычно происходит, так это то, что MySQL запускается с использованием метода «sort», заканчивается пространство и возвращается к методу «keycache» .
Обходной путь - позволить вашему серверу MySQL использовать больше места для сортировки. Это контролируется некоторыми переменными сервера:
Это обе динамические переменные, но я сомневаюсь, что изменение их после запуска таблицы alter принесет большую пользу. Если вы не хотите изменять конфигурацию вашей системы, то альтернативный подход заключается в построении индексов с использованием myisamchk в режиме восстановления с выделением больших буферов сортировки.