Както току-що прочетох, ALTER TABLE ... ORDER BY ...
заявката е полезна за подобряване на производителността в определени сценарии. Изненадан съм, че PK Index не помага за това. Но от документите на MySQL
, изглежда, че InnoDB прави използвайте индекса. Въпреки това InnoDB има тенденция да е по-бавен като MyISAM. Въпреки това с InnoDB няма да е необходимо да пренареждате таблицата, но ще загубите невероятната скорост на MyISAM. Все пак може да си струва да опитате.
Начинът, по който обяснявате проблемите, изглежда, че има твърде много данни, заредени в паметта (може би дори има размяна?). Можете лесно да проверите това, като наблюдавате използването на паметта си. Трудно е да се каже, тъй като не познавам MySQL толкова добре.
От друга страна, мисля, че проблемът ви се крие на съвсем различно място:Вие използвате машина със само 512 мегабайта RAM като сървър на база данни с таблица, съдържаща повече от 4 милиона реда... И изпълнявате много памет. операция на цялата маса на тази машина. Изглежда, че 512Megs няма да са достатъчни за това.
Много по-фундаментален проблем, който виждам тук:Вие правите разработка (и много вероятно също тествате) в среда, която е много различна от производствената среда. Видът на проблема, който обяснявате, е очакван. Вашата машина за разработка има шест пъти повече памет от вашата производствена машина. Вярвам, че мога спокойно да кажа, че процесорът също е много по-бърз. В такъв случай ви предлагам да създадете виртуална машина, имитираща вашия производствен сайт. По този начин можете лесно да тествате проекта си, без да нарушавате производствения сайт.