В MySQL есть одна полезная команда optimize table, которая как не сложно догадаться оптимизирует таблицу, а если конкретно, то дефрагментирует таблицу (по аналогии с дефрагментацией диска). Зачем это нужно?
Конкретный пример из жизни: 2 таблицы по 50 000 записей, в которых постоянно идут update, insert, delete. Ясное дело, что при таком подходе данные фрагментируются. Поэтому, когда мы делаем JOIN, то запрос выполняется 0.2 секунды - довольно много для базы данных. После optimize table запрос стал выполнятся 0.015 сек. Никаких дополнительных индексов, покупки железа - просто упорядочили данные на диске. Команду можно поставить в cron раз в сутки, например.