mysql模糊查询优化

使用下面的函数来进行模糊查询,如果出现的位置>0,表示包含该字符串。

查询效率比like要高。

如:

table.field like  ‘%AAA%’ 可以改为 locate (‘AAA’ , table.field) > 0

注:locate(substr,str)

用explain查看结果,rows越少越好!

1、用like查询

2、用locate查询

可以明显的看到,在此处虽然两者的rows一样,但是filtered的值,用了locate后的值是用like的值的10倍。

注:The filtered column
is described in the MySQL
manual
:

The filtered column indicates an estimated percentage of table rows that will be filtered by the table condition. That is, rows shows the estimated number of rows examined and rows × filtered
/ 100 shows the number of rows that will be joined with previous tables. This column is displayed if you use EXPLAIN EXTENDED. (New in MySQL 5.1.12)

也就是说,filtered的越高越好

时间: 2024-10-24 02:30:02

mysql模糊查询优化的相关文章

查询优化 | MySQL慢查询优化

?Explain查询:rows,定位性能瓶颈. 只需要一行数据时,使用LIMIT1. 在搜索字段上建立索引. 使用ENUM而非VARCHAR. 选择区分度高的列作为索引. 采用扩展索引,而不是新建索引. 慢查询日志:log-slow-queries,mysqldumpslow工具. 避免select * 尽可能使用NOT NULL where中避免索引无效. <MySQL索引原理及慢查询优化>    http://tech.meituan.com/mysql-index.html [查询语句的

Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办--转自http://www.jb51.net/article/88236.htm

这篇文章主要介绍了Mybatis使用MySQL模糊查询时输入中文检索不到结果的解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. ? 1 2 3 4 5 try { realName = new String(realNam

MySql模糊查询like通配符使用详细介绍

MySql模糊查询like通配符使用详细介绍 转载:http://chenpeng.info/html/2020 MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式. 一.SQL模式 SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符).在 MySQL中,SQL的模式缺省是忽略大小写的.下面显示一些例子.注意在你使用SQL模式时,你不能使用=或!=:而使用LIKE或NOT LIKE比较操作

php mysql 一个查询优化的简单例子

PHP+Mysql是一个最经常使用的黄金搭档,它们俩配合使用,能够发挥出最佳性能,当然,如果配合Apache使用,就更加Perfect了. 因此,需要做好对mysql的查询优化.下面通过一个简单的例子,展现不同的SQL语句对于查询速度的影响: 存在这样的一张表test,它有一个自增的id作为主索引.现在要查询id号处于某一个范围内的记录,可以使用如下SQL语句:  代码如下 复制代码 SELECT *FROM `test`order by id asclimit 208888,50 这条SQL语

MySQL模糊查询:LIKE模式和REGEXP模式

MySQL模糊查询提供了两种模式:LIKE模式和REGEXP模式. LIKE模式 LIKE模式是使用的LIKE 或 NOT LIKE 比较运算符进行模糊查询. SELECT 字段 FROM 表 WHERE 字段 LIKE[NOT LIKE] '条件' 针对条件,有以下几种通配符: 通配符 含义 % 表示任意一个或多个字符,可匹配任意类型和长度的字符 _ 表示任意单个字符,匹配单个任意字符 ESCAPE 关键字定义转义符.在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符. 示例: #

mysql模糊查询 like/REGEXP

原文:mysql模糊查询like/REGEXP 增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,于是模糊查找成了必修课. like模式 like意思是长得像,有两个模式:_和% _表示单个字符,通常用来查询定长的数据,如查出所有姓王的三个字的人名,假设姓名列名为name,注意“王”后面有两个_ select name from 表名 where name like '王__'; %表示0个或多个任意字符,如查出所有姓王的人名 select name fr

mysql模糊匹配查询like,regexp,in

mysql模糊匹配查询like,regexp,in 摘要 内容比较简单,无摘要. 关键词 模糊查询  like  regexp  in  contact 正文 下图是示例用到的数据表信息 MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式 一.SQL模式 SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在 MySQL中,SQL的模式缺省是忽略大小写的.

MySQL in查询优化

https://blog.csdn.net/gua___gua/article/details/47401621 MySQL in查询优化<一> 原创 2015年08月10日 17:57:56 5137 开发说他写了个SQL特别慢,让看看. [html] view plain copy select * from t_channel where id_ in(select distinct cdbh from sjkk_gcjl where jgsj>'2015-01-02 08:00:

MySQL 慢查询优化

为什么查询速度会慢 1.慢是指一个查询的响应时间长.一个查询的过程: 客户端发送一条查询给服务器 服务器端先检查查询缓存,如果命中了缓存,则立可返回存储在缓存中的结果.否则进入下一个阶段 服务器端进行SQL解析.预处理,再由优化器生成对应的执行计划. MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询. 将结果返回给客户端 2.数据访问 是否向数据库请求了不需要的数据 是否扫描额外的记录 3.查询的方式 一个复杂的查询还是多个简单的查询 切分查询(将大查询切分成小查询,循环完成小