SHOW TABLE STATUSを実行しましたか ドロップ+リビルドの前後? Index_lengthは大きく変わりますか?おそらく2倍でもないでしょう。
InnoDBで何かを再構築することはほとんどお勧めしません。それはそれだけの価値はありません。明白な例外は、FULLTEXTと関係があります インデックス。
はい、ダミーのALTER インデックスを再構築します。したがって、OPTIMIZE TABLE 。どちらも、セカンダリインデックスBTreeとメインBTree(データとPRIMARY KEYを含む)を(ある程度)「最適化」します。 。
統計は多く ANALYZE TABLEだけを使用してより安価に更新 。それでも必要になることはあまりありません。 5.6には、統計を維持するためのはるかに優れた方法があります。
innodb_file_per_table=ONをまだ使用していない場合 、設定することをお勧めします(SET GLOBAL ... )そしてALTER TABLE tbl ENGINE=InnoDB;を実行します 最後にもう一度。
オンライン変更
ft_*を変更するには 、インデックスを再構築する必要があります。これは、ALTERを意味します (またはOPTIMIZE 、ALTERとして実装されます )。 MySQLの新しいバージョンにはALGORITHM=INPLACEがあります これにより、ALTER 実行中のシステムにほとんどまたはまったく影響を与えません。ただし、制限があります。マニュアルを確認してください。
非INPLACEALTERの代替 pt-query-digestです またはgh-ost 。どちらかがあなたのケースで機能するかどうかを確認してください。
「テーブルの再構築」を除いて、DROP INDEX ...を実行できます。 およびADD INDEX ... 。繰り返しますが、これらがFTインデックスに対して「インプレース」で機能するかどうかはわかりません。とにかく、プロセス中にそのインデックスを使用できなくなります。