Prováděli jste SHOW TABLE STATUS před a po vašem pádu+přestavbě? Mění se hodně index_length? Pravděpodobně ani dvakrát.
Téměř nikdy nedoporučuji nic přestavět v InnoDB. Nestojí to za to. Jasná výjimka souvisí s FULLTEXT indexy.
Ano, figurína ALTER přestaví indexy. Stejně tak bude OPTIMIZE TABLE . Oba "defragmentují" (do určité míry) sekundární index BTrees a hlavní BTree (který obsahuje data a PRIMARY KEY ).
Statistik může být hodně levněji aktualizovat pomocí pouhého ANALYZE TABLE . Ani to není často potřeba. 5.6 má mnohem lepší způsob udržování statistik.
Pokud ještě nepoužíváte innodb_file_per_table=ON , navrhuji, abyste to nastavili (SET GLOBAL ... ) a proveďte ALTER TABLE tbl ENGINE=InnoDB; naposledy.
Online změna
Chcete-li změnit ft_* , musíte znovu sestavit index. To znamená ALTER (nebo OPTIMIZE , který je implementován jako ALTER ). Novější verze MySQL mají ALGORITHM=INPLACE což dělá ALTER mají malý nebo žádný dopad na běžící systém. Existují však omezení. Podívejte se do manuálu.
Alternativa k neINPLACE ALTER je pt-query-digest nebo gh-ost . Podívejte se, zda některý z nich bude ve vašem případě fungovat.
Krátce než „přestavba tabulky“, můžete DROP INDEX ... a ADD INDEX ... . Znovu, nevím, jestli tyto fungují pro FT indexy "na místě". Každopádně byste během procesu ztratili použití tohoto indexu.