mysql如何创建全文索引_从零开始学习MySQL全文索引

一、为什么要用全文索引

我们在用一个东西前,得知道为什么要用它,使用全文索引无非有以下原因

like查询太慢、json字段查询太慢(车太慢了)

没时间引入ElasticSearch、Solr或者Sphinx这样的软件,或者根本就不会用(无法将五菱宏光换成兰博基尼,即使有兰博基尼也不会开)

加索引、联合索引啥的都已经慢得不行了(限速80,车顶盖都卸了也只能开到30)

为了提升一下自己的逼格(人家问你有没有开过法拉利,你说开过肯定更有气质一点)

二、什么是全文索引

简单的说,全文索引就相当于大词典中的目录,通过查询目录可以快速定位到想看的内容。

全文索引通过建立倒排索引来快速匹配文档(仅在mysql5.6版本以上支持)

全文索引将连续的字母、数字和下划线当做一个单词,分割单词一般用空格/逗号/句号

MySQL的全文索引支持以下3种查询模式:

自然语言模式(IN NATURAL LANGUAGE MODE)

通过MATCH AGAINST 传递某个特定的字符串来进行检索

布尔模式(IN BOOLEAN MODE)

支持操作符,例如+表示包含,-表示不包含

扩展模式(WITH QUERY EXPANSION)

相当于自然语言模式下的一个扩展,执行两次检索,第一次使用给定短语检索,第二次是结合第一次相关性比较高的行进行检索.

更多请看:官方文档

下面教大家如何创建全文索引,并创建测试数据演示三种查询模式的使用

三、如何创建全文索引

方式一:建表时指定

CREATE TABLE light_weight_baby (

id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

title VARCHAR(200),

content TEXT,

FULLTEXT(title, content)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

方式二:ALTER添加

ALTER TABLE table_name ADD FULLTEXT INDEX index_name (column1,column2,...);

方式三:CRATE INDEX添加

CREATE FULLTEXT INDEX index_name ON table_name (column1,column2,...);

四、创建测试数据

创建一个数据库用来演示这三种模式下的检索

CREATE DATABASE chenqionghe DEFAULT CHARSET utf8;

创建一个文章表并插入测试数据

CREATE TABLE articles (

你可能感兴趣的:(mysql如何创建全文索引)