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 索引。