定义索引
在本教程中,您将学习如何定义全文索引,以便在MySQL中执行各种全文搜索。
在表的列中执行全文搜索之前,必须对其数据进行索引。 每当列的数据更改时,MySQL将重新创建全文索引。在MySQL中,全文索引是一种名称为FULLTEXT
的索引。
MySQL支持对全文搜索启用列自动建立索引和重新索引数据。 MySQL 5.6或更高版本允许您为数据类型为MyISAM
中的CHAR
,VARCHAR
或TEXT
或InnoDB
表类型的列定义全文索引。 请注意,自MySQL5.6版以来,MySQL支持InnoDB
表的全文索引。
MySQL允许您在使用CREATE TABLE语句创建表或为现有表使用ALTER TABLE或CREATE INDEX语句时来定义FULLTEXT
索引。
使用CREATE TABLE语句定义FULLTEXT索引
通常,使用CREATE TABLE
语句创建新表时,可以为列定义FULLTEXT
索引,如下所示:
要创建FULLTEXT
索引,请在FULLTEXT
关键字之后的括号中放置逗号分隔列的列表。
以下语句创建一个名为posts
的新表,该表具有包含post_content
列的FULLTEXT
索引。
定义现有表的FULLTEXT索引
如果您想要在一个已存在表上定义全文索引,可以使用ALTER TABLE
语句或CREATE INDEX
语句。
使用ALTER TABLE语句定义FULLTEXT索引
以下语法使用ALTER TABLE
语句定义FULLTEXT
索引:
将table_name
指定为一列或多列定义FULLTEXT
索引的ADD FULLTEXT
子句。
例如,可以在示例数据库(yiibaidb)的products
表中为productDescription
和productLine
列定义FULLTEXT
索引,如下所示:
使用CREATE INDEX语句定义FULLTEXT索引
还可以使用CREATE INDEX
语句为现有表创建FULLTEXT
索引。 请参阅以下语法:
以下语句为offices
表的addressLine1
和addressLine2
列创建一个FULLTEXT
索引。
请注意,对于具有多行的表,首先将数据加载到没有FULLTEXT
索引的表中,然后创建FULLTEXT
索引,而不是将大量数据加载到具有现有FULLTEXT
索引的表中,先加载数据后创建索引速度更快。
删除全文搜索列
要删除FULLTEXT
索引,只需使用ALTER TABLE ... DROP INDEX
语句删除索引。 例如,以下语句删除了offices
表中名称为address
的FULLTEXT
索引,可使用以下语句 -
在本教程中,我们向您展示了如何定义和删除支持MySQL全文搜索的FULLTEXT
索引。
Last updated