fulltext全文索引的使用详解数据库
数据库 使用 详解 全文索引 FULLTEXT
2023-06-13 09:20:09 时间
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
3938.html
mysql相关文章
- Oracle rownum原理和使用详解数据库
- 使用instantclient_11_2和pl/sql Developer连接oracle远程数据库详解数据库
- 使用命令行工具mysqlimport导入数据详解数据库
- postgresql 字符串拼接”||“的使用详解数据库
- 数据库中间件mycat安装与使用详解数据库
- MySQL系列:MySQL的基本使用详解数据库
- mysql中find_in_set()函数的使用详解数据库
- 轻松使用mssql,易语言打造数据库管理平台(mssql易语言)
- 使用Redis实现数据库的创建与管理(redis如何创建数据库)
- 使用MSSQL连接MySQL数据库的技术实现(mssql连接mysql)
- 京东使用MySQL大幅提升数据库性能(京东 mysql)
- 使用C语言编写MySQL批处理提高数据库性能(c mysql 批处理)
- 使用经验分享MySQL个人数据库管理技巧(mysql个人)
- 使用CMD重设MySQL数据库的密码(cmd重设mysql密码)
- 使用Oracle事件处理函数轻松管理数据库(oracle事件处理函数)
- Oracle数据库中同义词功能的使用(oracle 中同义词)
- 使用Oracle DBWLM 可以有效管理数据库性能(oracle dbwlm)
- 如何使用JSP连接DB2数据库
- python使用mysqldb连接数据库操作方法示例详解