41から始めました

文字通り41歳から始めたブログです。DB(MySQL)を使ってお仕事してるので、DB周りの話を中心に最近始めたこととかをTwitterのノリで書いています。なお、本サイトにおいて示されている見解は私個人の見解であり、所属団体や組織を代表するものではありません。

FULLTEXT INDEXは一個ずつ作ろう(by MySQL5.7)

バージョン

MySQL5.7.22

カラム追加の場合

ALTER TABLE table_A 
ADD COLUMN ft_column1 varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'フルテキストカラム1',
ADD COLUMN ft_column2 varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'フルテキストカラム2'
;

これはOK

インデックス追加の場合

ALTER TABLE table_A 
ADD FULLTEXT INDEX i_table_A_1 (ft_column1) WITH PARSER ngram,
ADD FULLTEXT INDEX i_table_A_2 (ft_column2) WITH PARSER ngram;

Error Code: 1795. InnoDB presently supports one FULLTEXT index creation at a time

これはNGなのかよぉぉぉ!

どうやら、「今は」できない様子。(いつかはできるのか?)

しゃあないので、1行ずつ

CREATE FULLTEXT INDEX i_table_A_1 ON table_A (ft_column1) WITH PARSER ngram;
CREATE FULLTEXT INDEX i_table_A_2 ON table_A (ft_column2) WITH PARSER ngram;

もしくは

ALTER TABLE table_A ADD FULLTEXT INDEX i_table_A_1 (ft_column1) WITH PARSER ngram;
ALTER TABLE table_A ADD FULLTEXT INDEX i_table_A_2 (ft_column2) WITH PARSER ngram;

といった感じで足すしかないようだ。