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中全文搜索的索引。
