MySQL 使用 Full-text Search (全文检索), MySQL 会自动为资料建立索引, 及在资料变更时重新建立索引。以前 Full-text Search 只支援 MyISAM, 并不支援 InnoDB, 由 MySQL 5.6 开始 InnoDB 及 MyISAM 也都支援 Full-text Search 了, 支援的字段类型有 CHAR, VARCHAR 及 TEXT。
MySQL 在建立资料表时可以用 FULLTEXT 定义索引, 如果现有资料表上, 也可以用 ALTER TABLE 或者 CREATE INDEX 完成。
以下是在 MySQL 建立资料表时用 FULLTEXT 定义索引的例子:
|
1 2 3 4 5 6 7 |
CREATE TABLE table_name( id INT(10) NOT NULL DEFAULT '0' AUTO_INCREMENT, title CHAR(255) NOT NULL DEFAULT '', content TEXT NOT NULL DEFAULT '', PRIMARY KEY (id), FULLTEXT(title,content) ); |
上面建立的 table_name 资料表, 用 FULLTEXT 建立 title 及 content 字段的全文索引, 字段与字段之间用逗号分隔。
在现在资料表上要定义全文索引, 可以用 ALTER TABLE 或 CREATE INDEX, 以下是 ALTER TABLE 的用法:
ALTER TABLE table_name ADD FULLTEXT(title,content);
上面会在 table_name 资料表加入 title 及 content 字段的全文索引。
至于要移除全文索引, 可以用 DROP INDEX 语句, 例如:
ALTER TABLE table_name DROP INDEX title;
以上会移除 table_name 资料表的 title 索引。