Jak jsem právě četl, ALTER TABLE ... ORDER BY ...
dotaz je užitečný pro zlepšení výkonu v určitých scénářích. Divím se, že s tím PK Index nepomáhá. Ale z dokumentů MySQL
, zdá se, že InnoDB dělá použijte index. InnoDB však bývá pomalejší než MyISAM. To znamená, že s InnoDB byste nemuseli znovu objednávat stůl, ale přišli byste o bleskovou rychlost MyISAM. Stále to může stát za pokus.
Jak vysvětlujete problémy, zdá se, že do paměti je načteno příliš mnoho dat (možná dokonce probíhá swapování?). Můžete to snadno zkontrolovat sledováním využití paměti. Těžko říct, protože MySQL tak dobře neznám.
Na druhou stranu si myslím, že váš problém leží na velmi odlišném místě:Používáte stroj s pouze 512 Megs RAM jako databázový server s tabulkou obsahující více než 4 miliony řádků... A provádíte velmi náročný na paměť operace na celém stole na tomto stroji. Zdá se, že 512Megů na to nebude ani zdaleka stačit.
Mnohem zásadnější problém zde vidím:Provádíte vývoj (a docela pravděpodobně také testování) v prostředí, které je velmi odlišné od produkčního prostředí. Problém, který popisujete, se dá očekávat. Váš vývojový stroj má šestkrát více paměti než váš produkční stroj. Věřím, že mohu s jistotou říci, že procesor je také mnohem rychlejší. V takovém případě vám doporučuji vytvořit virtuální stroj napodobující váš produkční web. Tímto způsobem můžete svůj projekt snadno otestovat, aniž byste narušili produkční web.