OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name[,tbl_name]...
        OPTIMIZE TABLE
        は、テーブルの大部分を削除したり、可変長レコードを持つテーブル(VARCHAR
        カラム、BLOB カラム、または
        TEXT
        カラムを持つテーブル)に多くの変更を加えた場合に使用します。
        削除されたレコードはリンクされたリストに保持され、元のレコード位置は、後続の
        INSERT
        操作により再利用されます。OPTIMIZE
        TABLE
        を使用して未使用領域を解放し、データファイルを最適化することができます。
      
        ほとんどの場合、OPTIMIZE TABLE
        を実行する必要はありません。可変長レコードに更新を多く行う場合でも、週または月に一度、特定のテーブルだけに実行するだけで十分です。
      
        現在のところ、OPTIMIZE TABLE は
        MyISAM テーブル、 BDB
        およびInnoDBテーブルにのみ有効です。BDB
        テーブルでは、OPTIMIZE TABLE は現在
        ANALYZE TABLE にマップされます。 See
        項4.6.2. 「ANALYZE TABLE 構文」。
      
        mysqld を --skip-new
        または --safe-mode
        で起動することにより、OPTIMIZE
        TABLE
        を他のテーブルタイプにでも使用できるようになります。しかしこの場合、OPTIMIZE
        TABLE は ALTER TABLE
        にマップされます。
      
        OPTIMIZE TABLE
        は以下のように動作します。
      
テーブルに削除されたレコードまたは分割されたレコードがある場合、テーブルを修復する。
インデックスページがソートされていない場合、ソートする。
統計が最新でなければ(およびインデックスのソートによる修復ができなかった場合)統計を更新する。
        注意: OPTIMIZE TABLE
        の実行中、テーブルはロックされます。
      
        MySQL 4.1.1
        より前のバージョンを使用している場合、OPTIMIZE
        コマンドはバイナリログに記録されません。MySQL
        4.1.1 以降を使用している場合は、オプションの
        NO_WRITE_TO_BINLOG
        キーワード(またはそのエイリアスの
        LOCAL)を使用していない限り、バイナリログに記録されます。
      
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

