MySQL提供了幾種全文索引引擎來優化文本搜索。這些引擎包括MyISAM、InnoDB和MEMORY。不過,從MySQL版本5.6.4開始,全文索引引擎改為了InnoDB。
MyISAM是MySQL的默認存儲引擎,而且它支持全文索引。全文索引可以進行更明智的文本搜索,因為它們考慮單詞位置和跨列的搜索方式。MyISAM的全文索引可以對字符、數字和日期類型的列進行索引。
InnoDB是MySQL的事務性存儲引擎,他是在大多數情況下用于MySQL的。InnoDB 引擎使用B-tree機制來提供數據索引。MySQL 5.6.4支持InnoDB 的全文索引,該版本只支持CHAR、VARCHAR和TEXT類型的列進行全文索引。使用InnoDB的全文索引將有助于您更好地管理數據,包括重命名列時不需要重建索引等。
CREATE TABLE `article` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL DEFAULT '', `content` text NOT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `content_index` (`content`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
MySQL的MEMORY引擎也支持全文索引,但是它僅在內存中存儲數據,因此缺乏穩定性。對于使用全文搜索的網站,InnoDB 引擎是最佳選擇,因為它提供了滿足您需要的所有要素。