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全文索引的使用的更多相关文章

  1. MySQL索引结构之Hash索引、full-text全文索引(面)

    Hash索引 主要就是通过Hash算法(常见的Hash算法有直接定址法.平方取中法.折叠法.除数取余法.随机数法),将数据库字段数据转换成定长的Hash值,与这条数据的行指针一并存入Hash表的对应位 ...

  2. mysql FullText全文索引的问题

    今天有同学问题,搜索ip的时候怎样能把 select ip from tabelx where ip like '%192.168.0.1%' 这种句子的性能优化. 的确,使用 like %x 的方式 ...

  3. mysql全文索引:fulltext

    fulltext全文索引 要使用全文索引,不仅需要把某个字段的索引类型设置为fulltext,还需要修改mysql配置文件: [mysqld] ft_wordlist_charset #表示词典的字符 ...

  4. Mysql索引介绍及常见索引(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别

    Mysql索引概念:说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要 ...

  5. Mysql主键索引、唯一索引、普通索引、全文索引、组合索引的区别

    原文:Mysql主键索引.唯一索引.普通索引.全文索引.组合索引的区别 Mysql索引概念: 说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不 ...

  6. MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?

    一.介绍一下索引的类型 Mysql常见索引有:主键索引.唯一索引.普通索引.全文索引.组合索引PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMAR ...

  7. 温故而知新-mysql的一些语法show,describe,explain,fulltext

    1 show show tables; 显示数据库的所有表 show databases; 显示所有数据库 show columns from table; 显示表的所有列 show grants f ...

  8. 一个高级的J2E工程师需要面对MySQL要有那些基本功夫呢<上>

    1. MySQL的架构介绍1.1 MySQL简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不 ...

  9. mysql 添加索引 mysql 创建索引

    1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引 ...

随机推荐

  1. Guava 库

    https://www.yiibai.com/guava https://wizardforcel.gitbooks.io/guava-tutorial/content/1.html com.goog ...

  2. mybatis ResultHandler vs ResultSetHandler及自定义扩展

    ResultSetHandler是mybatis的关键类之一,用于对jdbc返回的ResultSet进行映射处理,其中包括列前缀处理,逻辑分页,鉴别器(Discriminator,基于值实现动态映射列 ...

  3. 配置HTTPS全过程

    HTTPS配置全过程服务器配置https协议HTTPS,是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. ...

  4. videojs使用技巧

    1 初始化 Video.js初始化有两种方式. 1.1 标签方式 一种是在<video>标签里面加上class="video-js"和data-setup='{}'属性 ...

  5. 使用CompletableFuture实现业务服务的异步调用实战代码

    假如我有一个订单相关的统计接口,需要返回3样数据:今日订单数.今日交易额.总交易额. 一般的我们的做法是串行调用3个函数,把调用返回的结果返回给调用者,这3次调用时串行执行的,如果每个调用耗时1秒的话 ...

  6. Python3基础 tuple 使用通配符*进行拆包 简单示例

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  7. 如何分析redis中的慢查询

    慢查询的两个参数配置 慢查询只记录命令执行时间,并不包括命令排队和网络传输时间.因此客户端执行命令的时间会大于命令实际执行时间.因为命令执行排队机制,慢查询会导致其他命令级联阻塞,因此当客户端出现请求 ...

  8. Nginx修改时间戳

    1.安装nginx,注意不要安装nginx-common或者nginx-full sudo apt-get install nginx sudo apt-get install nginx-commo ...

  9. 爬取的地址存入mysql记录

    CREATE DATABASE HELLO; CREATE TABLE IF NOT EXISTS `botoo`( `id` INT UNSIGNED AUTO_INCREMENT, `title` ...

  10. 开发日记:Windows进程守护工具

    近期,中心应用服务无故关闭.在检查系统和应用程序日志无果后采取了进程守护的方法.测试期内,脚本未出现系统资源占用过多的情况. 使用说明:1.进程守护.vbs  使用时需修改运行周期(10行).守护进程 ...