Har du gjort SHOW TABLE STATUS före och efter din drop+rebuild? Ändras Index_length mycket? Förmodligen inte ens med en faktor två.
Jag rekommenderar nästan aldrig att bygga om något i InnoDB. Det är inte värt det. Ett påfallande undantag har att göra med FULLTEXT index.
Ja dummyn ALTER kommer att bygga om indexen. Så kommer OPTIMIZE TABLE . Båda kommer att "defragmentera" (i viss utsträckning) det sekundära indexet BTrees och huvud-BTree (som innehåller data och PRIMARY KEY ).
Statistiken kan vara mycket billigare uppdaterad med bara ANALYZE TABLE . Även det behövs inte ofta. 5.6 har ett mycket bättre sätt att underhålla statistiken.
Om du inte redan använder innodb_file_per_table=ON , jag föreslår att du ställer in det (SET GLOBAL ... ) och gör ALTER TABLE tbl ENGINE=InnoDB; en sista gång.
Onlineändring
För att ändra ft_* måste du bygga om indexet. Detta innebär en ALTER (eller OPTIMIZE , som implementeras som ALTER ). Nyare versioner av MySQL har ALGORITHM=INPLACE vilket gör ALTER har liten eller ingen inverkan på körsystemet. Men det finns begränsningar. Kontrollera manualen.
Ett alternativ till en icke-INPLACE ALTER är pt-query-digest eller gh-ost . Se om någon av dem fungerar för ditt fall.
Förutom att "bygga om tabellen" kan du DROP INDEX ... och ADD INDEX ... . Återigen, jag vet inte om dessa fungerar för FT-index "inplace". Hur som helst, du skulle förlora användningen av det indexet under processen.