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インデックスに対して「インプレース」で機能するかどうかはわかりません。とにかく、プロセス中にそのインデックスを使用できなくなります。