FULLTEXT索引
简介:在本教程中,您将学习如何定义用于在MySQL中执行各种全文搜索的全文索引。 在表的列中执行全文搜索之前,必须将其数据编入索引。只要列的数据发生变化,MySQL就会重新创建全文索引。在MySQL中,全文索引是一种具有名称
FULLTEXT
的索引。
MySQL支持 为启用全文搜索的列自动索引和重新索引数据 。MySQL的5.6或更高版本允许你定义一个全文索引的数据类型为一列CHAR
,VARCHAR
或TEXT
在MyISAM中或InnoDB的表型。请注意,自5.6版以来,MySQL支持InnoDB表中的全文索引。
MySQL允许您在为现有表创建表或ALTER TABLE或CREATE INDEX语句时使用CREATE TABLE语句定义FULLTEXT
索引。
使用CREATE TABLE语句定义FULLTEXT索引
通常,FULLTEXT
使用以下CREATE TABLE
语句创建新表时,可以为列定义索引:
CREATE TABLE table_name( column1 data_type, column2 data_type, column3 data_type, … PRIMARY_KEY(key_column), FULLTEXT (column1,column2,..) );要创建
FULLTEXT
索引,请在FULLTEXT
关键字后面的括号中放置逗号分隔列的列表。
以下语句创建一个名为posts
具有FULLTEXT
包含 post_content
列的索引的新表。
CREATE TABLE posts ( id int(4) NOT NULL AUTO_INCREMENT, title varchar(255) NOT NULL, post_content text, PRIMARY KEY (id), FULLTEXT KEY post_content (post_content) );
为现有表定义FULLTEXT索引
如果您已有现有表并想要定义全文索引,则可以使用ALTER TABLE
语句或CREATE INDEX
语句。
使用ALTER TABLE语句定义FULLTEXT索引
以下语法FULLTEXT
使用以下语句定义索引ALTER TABLE
:
ALTER TABLE table_name ADD FULLTEXT(column_name1, column_name2,…)在此语法中,您将使用
table_name
和ADD FULLTEXT
子句定义FULLTEXT
一个或多个列的索引。
例如,您可以FULLTEXT
为示例数据库的表中的productDescription
和productLine
列定义索引,如下所示:products
ALTER TABLE products ADD FULLTEXT(productDescription,productLine);
使用CREATE INDEX
语句定义FULLTEXT
索引
您还可以使用 CREATE INDEX
语句为现有表创建 FULLTEXT
索引。请参阅以下语法:
CREATE FULLTEXT INDEX index_name ON table_name(idx_column_name,...)以下语句
FULLTEXT
为表的列addressLine1
和addressLine2
列创建索引offices
。
CREATE FULLTEXT INDEX address ON offices(addressLine1,addressLine2);请注意,对于具有多行的表,将数据加载到
FULLTEXT
首先没有索引的表中然后创建FULLTEXT
索引比将大量数据加载到具有现有FULLTEXT
索引的表中更快。
删除全文搜索列
要删除FULLTEXT
索引,只需使用ALTER TABLE … DROP INDEX
语句删除索引即可。例如,以下语句删除表中的索引:address FULLTEXT
offices
ALTER TABLE offices DROP INDEX address;在本教程中,我们向您展示了如何定义和删除
FULLTEXT
支持MySQL中全文搜索的索引。