MySQL 5.5からの新機能、インデックスへのコメント付与を行う方法
MySQL 5.5より、インデックスへのコメント付与が可能となりました。
全文検索エンジンmroongaは、その機能を用いてFULLTEXTインデックスの生成方法を変えております。
インデックスコメントについての情報が少なかったので、紹介したいと思います。
テーブル構成
CREATE TABLE `foo_table` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
mroongaストレージエンジンを使ったサンプルでも紹介します。
これを使っていない限り、そうそうインデックスにコメントを追加する機会は無いと思います。
CREATE TABLE `mroonga_table` ( `id` int(11) NOT NULL, `data` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `search_data` (`data`) ) ENGINE=mroonga DEFAULT CHARSET=utf8;
コメント付きのインデックスを追加したい
ALTER TABLE
文を用いて、ADD INDEX
インデックス名(インデックスを貼るカラム名) COMMENT 'コメント'
という記述を行います。
ALTER TABLE foo_table ADD UNIQUE INDEX `name` (name) COMMENT 'ほげほげ';
mroongaへの全文検索インデックスを追加するクエリ例は次の通りです。
ALTER TABLE mroonga_table ADD FULLTEXT INDEX `search_data` (data) COMMENT 'parser "TokenMecab", normalizer "NormalizerAuto"';
コメント付きのインデックスを削除したい
ALTER TABLE
文を用いて、COMMENTの中身を空にしたインデックスを作り直す事で出来ます。
ALTER TABLE foo_table DROP INDEX name, ADD INDEX name (name) COMMENT '';
ALTER TABLE mroonga_table DROP INDEX search_data, ADD FULLTEXT INDEX search_data (data) COMMENT '';
既にあるインデックスにコメントを追加したい
こちらも、2つのクエリに分けずに、1クエリで行いましょう。
理由としては、本番環境で利用しているテーブルで分けて実行すると、インデックスが無い状態が発生するためです。
ALTER TABLE foo_table DROP INDEX name, ADD INDEX name (name) COMMENT 'ふがふが';
ALTER TABLE mroonga_table DROP INDEX search_data, ADD FULLTEXT INDEX search_data (data) COMMENT 'parser "TokenMecab", normalizer "NormalizerAuto"';
あわせて読みたい
mroonga向けの資料です。