MySQL的全文索引用于搜索文本中的关键字,类似于like查询。
演示
建表
CREATE TABLE demo (
id INT(11) NOT NULL,
name CHAR(30) NOT NULL,
age INT(11) NOT NULL,
info VARCHAR(255),
primary key(id),
fulltext index futxt_idx_info(info)
);
此表的默认存储引擎为InnoDB
插入数据
insert into demo values(1, 'zhansan', '23', '此人 名为张三 年龄呢 二十三岁了 至今 未婚');
insert into demo values(2, '李四', '24', '此人呢 名为李四 年龄 二十四岁了 至今 未婚');
查询结果
- 传统使用like方式的查询
select * from demo where info like '%张三%';
- 查询配置的最小搜索长度
SHOW VARIABLES LIKE '%innodb_ft_min_token_size%';
若检索的字符串长度小于最小搜索长度,则不会被索引。
- 全文索引使用match+against方式查询
select * from demo where match(info) against('此人');
select * from demo where match(info) against('年龄');
上面的SQL语句由于检索的字符串长度小于最小搜索长度,所以无法查询到。
修改检索字符串,重新进行查询
select * from demo where match(info) against('年龄呢');
select * from demo where match(info) against('此人呢');
可以查询到结果
使用explain进行分析
可以看到类型为:fulltext