场景
单表数据量在几十万条的时候,发现对一个中文字段进行模糊查询的时,巨慢,几乎达到了几十秒。
解决
Mysql5.7是有中文的全文索引检索功能。
CREATE FULLTEXT INDEX 索引名 ON 表名 (字段名) WITH PARSER NGRAM;
具体的模糊查询SQL语句
MATCH(字段名) AGAINST ( CONCAT('+', 传入模糊查询参数, '*') IN BOOLEAN MODE);
全文索引 Text index
- 定义:全文索引就是通过将文字按照某种语言进行词汇拆分,重新将数据组合存储,来达到快速检索的目的
- 场合:当字段里存储的都是文本时适合用全文索引,常用于搜索文字
- 优点:全文索引不是按照键值存储的,而是按照分词重组数据,常用于模糊查询Where name like '%leonarding%'效率比全表扫描高很多,适用OLAP系统,OLTP系统里面用到的并不多。
- 缺点:全文索引会占用大量空间有时比原表本身占的空间还多,bug较多,维护困难。
参考博客
MySQL 5.7 中文全文检索使用教程
1034

被折叠的 条评论
为什么被折叠?



