fulltext全文索引的使用
Fulltext全文索引
Fulltext相关属性
查看数据库关于fulltext的配置
SHOW VARIABLES LIKE 'ft%'; -- ft就是FullText的简写
ft_boolean_syntax
Fulltext用法
MATCH (col1, col2,...) AGAINST (expr [search_modifier]) -- where条件后使用
三种搜寻方式
跟在against括号中expr 的后面。
IN BOOLEAN MODE
expr里有特殊字符辅助特殊的搜寻语法。
不剔除50%以上符合的row。
不自动以相关性反向排序。
可以对没有FULLTEXT index的字段进行搜寻,但会非常慢。
限制最长与最短的字符串。
套用Stopwords。
IN NATURAL LANGUAGE MODE
string就是要搜寻的字符串。
没有特殊字符。
IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION / WITH QUERY EXPANSION
Fulltext遇到的问题
多个以uuid分割的拼接字符串
当用match against时会查出其他所有不相关的,-变成了一个分隔符,将uuid分割成很多部分,包含其中一部分都会被查出来。
解决方法
select temp.* from
(
select * from `pay_hisory` where match(leavingId) against('fc60c2aa-fa98-4b0c-8d46-98b8dc9ebc24') -- 先把所有的查出来,作为子表
) as temp
where temp.leavingId = 'fc60c2aa-fa98-4b0c-8d46-98b8dc9ebc24' --再查询精确的id,无意中发现mysql5.6这样能查到,mysql5.7不可以;
上面这种在mysql5.6没问题explain为两条,但是到了mysql5.7,exlpain会变成一个simple
select * from
(
select * from `pay_hisory` where match(leavingId) against('9a26175e-9ddf-4826-bd10-00d52067c62d') and 1=1
) as a
where leavingId like '%9a26175e-9ddf-4826-bd10-00d52067c62d%'; -- mysql5.7要用like
fulltext全文索引的使用的更多相关文章
- MySQL索引结构之Hash索引、full-text全文索引(面)
Hash索引 主要就是通过Hash算法(常见的Hash算法有直接定址法.平方取中法.折叠法.除数取余法.随机数法),将数据库字段数据转换成定长的Hash值,与这条数据的行指针一并存入Hash表的对应位 ...
- mysql FullText全文索引的问题
今天有同学问题,搜索ip的时候怎样能把 select ip from tabelx where ip like '%192.168.0.1%' 这种句子的性能优化. 的确,使用 like %x 的方式 ...
- mysql全文索引:fulltext
fulltext全文索引 要使用全文索引,不仅需要把某个字段的索引类型设置为fulltext,还需要修改mysql配置文件: [mysqld] ft_wordlist_charset #表示词典的字符 ...
- Mysql索引介绍及常见索引(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别
Mysql索引概念:说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要 ...
- Mysql主键索引、唯一索引、普通索引、全文索引、组合索引的区别
原文:Mysql主键索引.唯一索引.普通索引.全文索引.组合索引的区别 Mysql索引概念: 说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不 ...
- MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?
一.介绍一下索引的类型 Mysql常见索引有:主键索引.唯一索引.普通索引.全文索引.组合索引PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMAR ...
- 温故而知新-mysql的一些语法show,describe,explain,fulltext
1 show show tables; 显示数据库的所有表 show databases; 显示所有数据库 show columns from table; 显示表的所有列 show grants f ...
- 一个高级的J2E工程师需要面对MySQL要有那些基本功夫呢<上>
1. MySQL的架构介绍1.1 MySQL简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不 ...
- mysql 添加索引 mysql 创建索引
1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引 ...
随机推荐
- ConcurrentHashMap 无锁读
ConcurrentHashMap 可以做到无锁读,而写使用分段锁机制,把整个哈希表切分成段segment(默认为16段),每段有一个锁,最多可以同时有16个写线程.而读不受限制. 下文转自http: ...
- java定时任务框架Quartz入门与Demo搭建
- java判断指定路径文件夹是否存在,若不存在则创建新的文件夹
File file = new File(dirPath); if (!file.exists()) { file.mkdirs(); }
- 【PHP】php实现二进制、八进制、十进制、十六进制之间各自转换的函数
<?php /* 常见的进制: 二进制 binary -----> bin 八进制 octal -----> oct 十进制 decimal -----> dec 十六进制 h ...
- 【Python】解析Python中类的使用
目录结构: contents structure [-] 类的基本使用 专有方法 继承 单重继承 多重继承 砖石继承 1.类的基本使用 下面是类使用的一个简单案例, class person: &qu ...
- 支付宝小程序开发——获取位置API没有城市区号的最佳处理方案
前言: 需要对城市区号进行判断,但是支付宝小程序提供的my.getLocation() API返回的数据中只有6位的城市行政代码,诸如:深圳(440300),并没有区号(0755),那么怎么办呢? 需 ...
- 【转载】 TensorFlow tf.app&tf.app.flags用法介绍
作 者:marsggbo 出 处:https://www.cnblogs.com/marsggbo版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本. ---------- ...
- 安装opencv时ippicv下载超时
1.手动去下载: github地址为: https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20151201/ippicv 2.查 ...
- 【SpringBoot】SpringBoot 国际化(七)
本周介绍SpringBoot项目的国际化是如何处理的,阅读本章前请阅读[SpringBoot]SpringBoot与Thymeleaf模版(六)的相关内容 国际化原理 1.在Spring中有国际化Lo ...
- iOS开发 判定某个时间是否属于这个时间段
- (BOOL)isBetweenDate { //设置的是中国时间 NSString *startTime=@"13:01"; NSString *expireTime=@&qu ...