Zoals ik zojuist heb gelezen, is de ALTER TABLE ... ORDER BY ...
query is handig om de prestaties in bepaalde scenario's te verbeteren. Het verbaast me dat de PK Index hier niet bij helpt. Maar, van de MySQL-documenten
, lijkt het erop dat InnoDB doet gebruik de index. InnoDB is echter meestal langzamer dan MyISAM. Dat gezegd hebbende, met InnoDB zou je de tafel niet opnieuw hoeven te bestellen, maar zou je de razendsnelle snelheid van MyISAM verliezen. Het is misschien nog steeds het proberen waard.
Zoals je de problemen uitlegt, lijkt het erop dat er te veel gegevens in het geheugen zijn geladen (misschien wordt er zelfs gewisseld?). U kunt dat eenvoudig controleren door uw geheugengebruik in de gaten te houden. Het is moeilijk te zeggen omdat ik MySQL niet zo goed ken.
Aan de andere kant denk ik dat uw probleem op een heel andere plaats ligt:u gebruikt een machine met slechts 512 Meg RAM als databaseserver met een tabel met meer dan 4 miljoen rijen... operatie op de hele tafel op die machine. Het lijkt erop dat 512 Megs daar lang niet genoeg voor zal zijn.
Een veel fundamenteler probleem dat ik hier zie:je doet aan ontwikkeling (en waarschijnlijk ook aan testen) in een omgeving die heel anders is dan de productieomgeving. Het soort probleem dat u uitlegt is te verwachten. Uw ontwikkelmachine heeft zes keer zoveel geheugen als uw productiemachine. Ik geloof dat ik gerust kan zeggen dat de processor ook veel sneller is. In dat geval raad ik u aan een virtuele machine te maken die uw productiesite nabootst. Op die manier kunt u uw project eenvoudig testen zonder de productiesite te verstoren.