mysql like模糊查询like %someTitle%效率低下
来源:互联网 发布:sql dense rank 编辑:程序博客网 时间:2024/05/22 09:08
mysql like模糊查询提高效率的奇葩方法!不知道有没有人这么干过?
一张表大概40万左右的数据,用like模糊查询title字段,很慢,title字段已经建立了索引,mysql 对 someTitle% 这样的模糊查询在有索引的前提下是很快的。
所以下面这两台sql语句差别就很大了
$sql1 = "...... title like someTitle%" (话费0.001秒)
$sql2 = "...... title like %someTitle%" (话费0.8秒)
这两句的效率相差了800倍,这很可观啊。
所以我有个想法:在不用分词的方法的前提下,把存储的title字段,加一个特别的前缀,比如"im_prefix",比如一条记录的title="我是标题党",那么存储的时候就存储为"im_prefix我是标题党"。
这样一来,我们要模糊查找"标题党"这个关键词的时候,就把sql写成这样:
查询效率比如果: table.field like '%AAA%' 可以改为 locate ('AAA' , table.field) > 0 返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0. 返回子串substr在字符串str第一个出现的位置,从位置pos开始。如果substr不是在str里面,返回0。
所以下面这两台sql语句差别就很大了
$sql1 = "...... title like someTitle%" (话费0.001秒)
$sql2 = "...... title like %someTitle%" (话费0.8秒)
这两句的效率相差了800倍,这很可观啊。
所以我有个想法:在不用分词的方法的前提下,把存储的title字段,加一个特别的前缀,比如"im_prefix",比如一条记录的title="我是标题党",那么存储的时候就存储为"im_prefix我是标题党"。
这样一来,我们要模糊查找"标题党"这个关键词的时候,就把sql写成这样:
$sql1 = "...... title like im_prefix%标题党%" (花费0.001秒),前台显示数据的时候,自然把取到的title过滤掉"im_prefix"这个前缀了。
mysql 高效模糊查询 代替like
mysql> select LOCATE('bar', 'foobarbar'); -> 4 mysql> select LOCATE('xbar', 'foobar'); -> 0
该函数是多字节可靠的。
mysql> select LOCATE('bar', 'foobarbar',5); -> 7
这函数是多字节可靠的。
0 0
- mysql like模糊查询like %someTitle%效率低下
- MySQL模糊查询like
- mysql模糊查询like
- Mysql模糊查询like效率,以及更高效的写法
- 分析为什么mysql中like模糊查询效率低
- mysql like 非模糊查询
- MySQL中的模糊查询:like
- mysql模糊查询like/REGEXP
- LIKE 多字段匹配 效率低下
- LIKE 多字段匹配 效率低下
- mysql中文like模糊查询问题
- python中的mysql数据库like模糊查询
- mysql中like模糊查询优化
- mysql带 like 的模糊查询
- MySQL的模糊查询(like)
- MySql模糊查询like通配符的使用
- mybatis实现mysql数据库模糊查询like %?%
- mysql模糊查询like通配符使用介绍
- 【HDU】5753 Permutation Bo
- C#控制台 应用rank函数知道数组几维的
- 一看就会,一看就懂,快速上手Git
- Sublime工具主题个人配置
- Linux-(C)IO多路复用之select学习(转载)
- mysql like模糊查询like %someTitle%效率低下
- JDBC-二进制文件的存储与读取
- 【leetcode】36. Valid Sudoku
- PCB设计经验:布局基本要领
- setTimeout初探(二):零延迟的定时任务
- 关于字符数组与字符串指针的区分
- 61%的美国民众担心自己的私家车以及家庭安保摄像探头会遭到黑客攻击
- java.io.EOFException: Unexpected end of ZLIB input stream异常处理
- Android手机抓包教程