"Reparera genom sortering" använder rutinen filesort, som i sin tur skapar flera temporära filer (vanligtvis) i din tmpdir.
Om din tmpdir inte har tillräckligt med utrymme för dem, kommer den att återgå till "Reparera med nyckelcache". Detta är extremt dåligt eftersom det är mycket långsammare OCH skapar mindre optimala index.
Det finns några andra tillstånd men jag har inte identifierat dem.
Att räkna ut storleken på tmpdir du behöver för filesort() är inte trivialt; formatdata lagras i filens buffert är inte detsamma som MYD-filer, det tar vanligtvis mycket mer utrymme.
Så om din tmpdir pekar på en liten /tmp (eller tmpfs), kanske du vill ändra den till en större /var/tmp - om den finns.