Seperti yang baru saja saya baca, ALTER TABLE ... ORDER BY ...
query berguna untuk meningkatkan kinerja dalam skenario tertentu. Saya terkejut bahwa Indeks PK tidak membantu dalam hal ini. Namun, dari dokumen MySQL
, sepertinya InnoDB memang menggunakan indeks. Namun InnoDB cenderung lebih lambat seperti MyISAM. Yang mengatakan, dengan InnoDB Anda tidak perlu memesan ulang tabel tetapi Anda akan kehilangan kecepatan super MyISAM. Mungkin masih layak dicoba.
Cara Anda menjelaskan masalahnya, tampaknya ada terlalu banyak data yang dimuat ke dalam memori (mungkin bahkan terjadi pertukaran?). Anda dapat dengan mudah memeriksanya dengan memantau penggunaan memori Anda. Sulit untuk mengatakannya karena saya tidak tahu MySQL dengan baik.
Di sisi lain, saya pikir masalah Anda terletak di tempat yang sangat berbeda:Anda menggunakan mesin dengan hanya 512 MB RAM sebagai server Database dengan tabel yang berisi lebih dari 4 Mio baris... Dan Anda melakukan memori yang sangat berat operasi di seluruh meja di mesin itu. Tampaknya 512Megs tidak akan cukup untuk itu.
Masalah yang jauh lebih mendasar yang saya lihat di sini:Anda melakukan pengembangan (dan kemungkinan besar pengujian juga) di lingkungan yang sangat berbeda dengan lingkungan produksi. Jenis masalah yang Anda jelaskan adalah yang diharapkan. Mesin pengembangan Anda memiliki memori enam kali lebih banyak daripada mesin produksi Anda. Saya yakin saya dapat mengatakan dengan aman, bahwa prosesornya juga jauh lebih cepat. Dalam hal ini, saya sarankan Anda membuat mesin virtual yang meniru situs produksi Anda. Dengan begitu, Anda dapat dengan mudah menguji proyek tanpa mengganggu lokasi produksi.