Som jeg lige har læst, er ALTER TABLE ... ORDER BY ...
forespørgsel er nyttig til at forbedre ydeevnen i visse scenarier. Jeg er overrasket over, at PK-indekset ikke hjælper med dette. Men fra MySQL-dokumenterne
, det ser ud til, at InnoDB gør det bruge indekset. InnoDB har dog en tendens til at være langsommere som MyISAM. Når det er sagt, med InnoDB ville du ikke behøve at omarrangere bordet, men du ville miste den lynende hastighed af MyISAM. Det kan stadig være et forsøg værd.
Den måde du forklarer problemerne på, ser det ud til, at der er for meget data indlæst i hukommelsen (måske er der endda udveksling i gang?). Du kan nemt kontrollere det ved at overvåge dit hukommelsesforbrug. Det er svært at sige, da jeg ikke kender MySQL så godt.
På den anden side tror jeg, at dit problem ligger et helt andet sted:Du bruger en maskine med kun 512 Megs RAM som databaseserver med en tabel, der indeholder mere end 4 mio. rækker... Og du udfører en meget hukommelsestung drift på hele bordet på den maskine. Det ser ud til, at 512Megs ikke næsten vil være nok til det.
Et meget mere grundlæggende problem, jeg ser her:Du laver udvikling (og tester sandsynligvis også) i et miljø, der er meget anderledes end produktionsmiljøet. Den slags problem, du forklarer, kan forventes. Din udviklingsmaskine har seks gange så meget hukommelse som din produktionsmaskine. Jeg tror, jeg kan roligt sige, at processoren også er meget hurtigere. I så fald foreslår jeg, at du opretter en virtuel maskine, der efterligner dit produktionssted. På den måde kan du nemt teste dit projekt uden at forstyrre produktionsstedet.