"Reparar por classificação" usa a rotina de classificação de arquivos, que por sua vez cria vários arquivos temporários (geralmente) em seu tmpdir.
Se o seu tmpdir não tiver espaço suficiente para eles, ele reverterá para "Reparar por keycache". Isso é extremamente ruim, pois é muito mais lento E cria índices menos ideais.
Existem algumas outras condições, mas não as identifiquei.
Calcular o tamanho do tmpdir necessário para filesort() não é trivial; os dados de formato são armazenados no buffer de classificação de arquivos não é o mesmo que os arquivos MYD, normalmente usa muito mais espaço.
Portanto, se o seu tmpdir apontar para um /tmp pequeno (ou tmpfs), você poderá alterá-lo para um /var/tmp maior - se existir.