【MySQL】十三,关于MySQL的全文索引

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

相关推荐
wu_yi_min18 分钟前
Spring Boot 日志:项目的“行车记录仪”
java·数据库·spring boot
如意机反光镜裸36 分钟前
如何批量导入竖版Excel表到数据库
数据库·excel
深蓝海拓37 分钟前
Pyside6(PyQT5)的QSqlQueryModel的常用方法
数据库
宁静致远20211 小时前
Qt u盘自动升级软件
数据库·qt·嵌入式linux开发
记得开心一点嘛2 小时前
Redis --- 分布式锁的使用
数据库·redis·分布式
Elastic 中国社区官方博客3 小时前
Elasticsearch:如何搜索含有复合词的语言
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
青草地溪水旁3 小时前
mysql_init和mysql_real_connect的形象化认识
数据库·mysql
微微%3 小时前
sql中INNER JOIN、LEFT JOIN、RIGHT JOIN
数据库·sql
自不量力的A同学4 小时前
MySQL 9.2.0 的功能
数据库·mysql
XiaoLeisj5 小时前
【MySQL — 数据库增删改查操作】深入解析MySQL的 Update 和 Delete 操作
数据库·mysql