备案 控制台
学习
实践
活动
专区
工具
TVP
写文章

mysql like 性能 优化

网上很多 优化 like 的方法,无非下面几种,抄来抄去的。 我用213万条数据,每条数据50个字段左右(用的真实的生产环境的 mysql 数据库,和真实的生产环境的数据),做了性能测试;时间记录的次数不多,但是基本都做了10次左右,时间误差不大的,就只记录了3次,结果如下 1.LOCATE,INSTR,REGEXP三个函数,效果在 like 面前没有任何优势。 3. like ,如果要用,那用左匹配,效果是最好的,因为可以用上索引,其他的方式,索引会失效的,速度自然很低。 4.并没有发现什么有效的 优化 方式。 `ent_name` LIKE CONCAT('奥的斯','%'); -- 表级锁 情况 SHOW STATUS LIKE 'table%'; -- 行级锁 情况 SHOW STATUS LIKE

2.9K 3 0

mysql 优化 篇:where中的 like 和=的性能分析

mysql 优化 篇:where中的 like 和=的性能分析 没错,事情不能只看表面,如果你细心研究,就会发现其实 like 和等于号'='并不是那么简单,下面我们将详细的分析他们两者的真正区别~~~ mysql 优化 篇:where中的 like 和=的性能分析 那我们来使用explain测试一下 like 和=下的查询情况,首先我们来测试一下为索引的字段: EXPLAIN SELECT * FROM mysql 优化 篇:where中的 like 和=的性能分析 而现在我们把"="换成 like 试一下: EXPLAIN SELECT * FROM crms_customer WHERE mysql 优化 篇:where中的 like 和=的性能分析 有的小伙伴该问了那非索引字段呢? mysql 优化 篇:where中的 like 和=的性能分析 like : mysql 优化 篇:where中的 like 和=的性能分析 可以看出当非索引字段时 like 和"="是一样的,性能上也没有差别。

662 3 0
  • 广告
    关闭

    上云精选

    2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Mysql - like 语句会不会走索引

    答案是满足特定条件,会,如下: like '%中国%'; 不会触发 like '%中国'; 不会触发 like '中国%'; 会触发 原因是满足最左前缀 最左前缀不仅仅适用于组合索引,还适用于 varchar的 like 语句,但是要注意,只有 like "XXX%"的情况走索引, like "%XXX"是不走索引的。 Mysql innodb引擎默认的索引数据结构是b+树,组合索引会形成多字段顺序排序,比如下图,会先按照姓名进行排序,姓名相等就再按照年龄排序,所以会有组合索引的最左前缀原理,而假如只 like 查询姓名,例如 like "张%",则也可以使用最左前缀原理,先索引到张六,然后遍历查询,直到姓名不以张开头。

    562 2 0

    sql 之 like 和通配符%,_( mysql

    (。ŏ_ŏ) like 模糊查询,啥叫模糊查询? 例如:我们一个数据库里面存在在一个人叫做李二三四。 我们忘记了他的名字,只记得他的姓名,那么我们就可以使用 like 加上通配符来查询出我们所要的结果;话说回来,啥是通配符?通配符等下再说,等下就懂了。 那么看如下语句: SELECT * FROM table1 WHERE name1 LIKE ‘李%’; 首先,我们在语句最后面使用 LIKE ‘李%’,在这里我们使用了 like 操作符,后面单引号就是我们的条件 在这里,通配符可以替代一个或多个字符,通配符必须与 LIKE 运算符一起使用。 SELECT * FROM table1 WHERE name1 LIKE ‘花‘; 结果如下: ?

    754 3 0

    like 等价改写substr 优化 案例一则

    select * from (SELECT item_ver FROM items T WHERE :B1 BETWEEN T.FIRST_SN AND T.LAST_SN AND :B1 LIKE 满足 :B1 BETWEEN T.FIRST_SN AND T.LAST_SN 谓词条件的记录数较多,满足 :B1 LIKE SUBSTR (T.FIRST_SN, 1, 10) || '%' 谓词条件的记录数也比较多 最终 优化 建议,改写+索引调整: 1、改写SQL,将:B1 LIKE SUBSTR (T.FIRST_SN, 1, 10) || '%' 等价改写为下面红色部分: select * from (SELECT 随机选择一个绑定变量在测试环境测试,原来将近2000 buffer gets, 优化 后变成11个buffer。 (当然,除了top cpu1 sql以外,还有其他一些top sql也做了 优化 调整,整体 优化 后大概有20%左右的系统CPU使用率下降) 能得到客户这样的评价还是很受用的.

    132 1 0

    MySQL 模糊查询再也不用 like +% 了!

    在早期的 MySQL 中,InnoDB 并不支持全文检索技术,从 MySQL 5.6 开始,InnoDB 开始支持全文检索。最新 MySQL 面试题整理好了,点击Java面试库小程序在线刷题。 ENGINE=InnoDB; 输入查询语句: SELECT table_id, name, space from INFORMATION_SCHEMA.INNODB_TABLES WHERE name LIKE 上述语句,查询 title,body 列中包含 ' MySQL ' 关键字的行数量。 之间的距离需在30字节内 >:表示出现该单词时增加相关性 <:表示出现该单词时降低相关性 ~:表示允许出现该单词,但出现时相关性为负 * :表示以该单词开头的单词,如 lik*,表示可以是 lik, like `fts_articles` WHERE     MATCH ( title, body ) AGAINST ( ' MySQL IBM' IN BOOLEAN MODE ); 上述语句,查询的 ' MySQL

    300 3 0

    Mysql 常用sql语句(9)- like 模糊查询

    测试必备的 Mysql 常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html like 应该是最常用的查询条件了 必须滴掌握! like 的语法格式 LIKE '字符串' NOT LIKE '字符串' NOT:取反,不满足指定字符串时匹配 字符串:可以是精确的字符串,也可以是包含通配符的字符串 LIKE 支持 和 _ 两个通配符 like 区分大小写的栗子 默认情况下, like 匹配的字符串是不区分大小写的; 和 like "TEST1" 匹配的结果是一样的 like "test1" 如果需要区分大小写,需要加入 关键字 binary %,可以使用 转义符 实际场景:搜索功能,搜索框只输入%看是否返回所有记录,如果是的话证明没有做转义可以提个 优化 项哦! 注意头部、尾部多余的空格: 是不会匹配到“test1”的 " test% " 注意NULL:通配符是不能匹配到字段为NULL的记录的 不要过度使用通配符:因为 Mysql 对通配符的处理速度会比其他操作花费更长的时间

    1.3K 2 0

    SQL中用到 LIKE 模糊检索的几种 优化 场景

    SQL开发中经常会碰到使用 LIKE 模糊检索的场景,'%'的位置,可能影响索引的正常使用,看到刘老师公众号的一篇文章,介绍了相关场景的改造策略,非常受用,推荐阅读。 分为三种情况, (1) ABC始终从字符串开始的某个固定位置出现,可以创建函数索引进行 优化 。 (2) ABC始终从字符串结尾的某个固定位置出现,可以创建函数组合索引进行 优化 。 (3) ABC在字符串中位置不固定,可以通过改写SQL进行 优化 。 第一种情况,ABC始终从字符串开始的某个固定位置出现。 可以通过substr函数截取字符串的功能,创建函数索引。 'BISAL%'; 可以用到索引, 第二种情况,ABC始终从字符串结尾的某个固定位置出现,可以创建函数组合索引进行 优化 。 reverse ('%BISAL'); 第三种情况,ABC在字符串中位置不固定,可以通过改写SQL进行 优化

    183 1 0

    【愚公系列】2021年12月 Mysql 数据库-模糊查询 like 效率问题和 优化 方案

    文章目录 一、模糊查询 like 效率 二、更高效的写法 2.LOCATE('substr',str,pos)方法 3.POSITION('substr' IN `field`)方法 4.INSTR (`str`,'substr')方法 5.FIND_IN_SET(str1,str2)方法 这篇文章主要向大家介绍 Mysql 模糊查询 like 效率,以及更高效的写法,主要内容包括基础应用、实用技巧 提示:以下是本篇文章正文内容,下面案例可供参考 一、模糊查询 like 效率 在使用msyql进行模糊查询的时候,很天然的会用到 like 语句,一般状况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级 优化 大部分写法都是返回索引位置来提升查询效率,并非全部去匹配。 因为达到百万级基本都是分库分表,这种写法一样意义不是特别大 like 基本够用,学习中需要多多积累记录下。

    307 2 0

    MySQL 模糊查询: MySQL 数据库 like 语句通配符模糊查询小结

    MySQL 报错:Parameter index out of range (1 > number of parameters, which is 0)—— MySQL 数据库 like 语句通配符模糊查询小结 MySQL 报错:Parameter index out of range (1 > number of parameters, which is 0)—— MySQL 数据库 like 语句通配符模糊查询小结 、 like 语句的应用场景 2.2、模糊查询剖析 2.3、正确语句 三、MyBatis like 模糊查询及关键字区分 今天在使用 MySQL 语句执行增删改查操作时,控制台报出了以下错误 like 语句中通配符"?" 二、 like 语句使用通配符模糊查询剖析 2.1、 like 语句的应用场景 使用 like 通配符进行模糊查询是我们在项目中常遇到的,比如在搜索框中对于数据的模糊查询。

    261 4 0

    MySQL 模糊查询再也不用 like +%了

    在早期的 MySQL 中,InnoDB 并不支持全文检索技术,从 MySQL 5.6 开始,InnoDB 开始支持全文检索。 ENGINE=InnoDB; 输入查询语句: SELECT table_id, name, space  from INFORMATION_SCHEMA.INNODB_TABLES WHERE name LIKE 之间的距离需在30字节内 >:表示出现该单词时增加相关性 <:表示出现该单词时降低相关性 ~:表示允许出现该单词,但出现时相关性为负 * :表示以该单词开头的单词,如 lik*,表示可以是 lik, like "' IN BOOLEAN MODE ); 上述语句,查询包含确切短语 ' MySQL Security' 的行信息。 感兴趣可继续关注 MySQL 官方文档进行学习:https://dev. mysql .com/doc/refman/8.0/en/fulltext-search.html。

    428 3 0

    男朋友连模糊匹配 like %%怎么 优化 都不知道

    8.0推出了列的直方图统计信息特性,主要针对索引列数据分布不均匀的情况进行 优化 。 模糊匹配改写 优化 在开启ICP特性后,对于条件where name = 'Lyn' and nickname like '%SK%' 可以利用复合索引 (name,nickname) 减少不必要的数据扫描 对于where条件后的 like '%xxx' 是无法利用索引扫描,可以利用 MySQL 5.7的生成列模拟函数索引的方式解决,具体步骤如下: 利用内置reverse函数将 like '%风云'反转为 like 介绍了索引条件下推ICP特性,全文索引以以及生成列特性,利用这些特性可以对模糊匹配 like %xxx% 或 like %xxx 的业务SQL进行 优化 ,可以有效降低不必要的数据读取,减少IO扫描以及 对于 MySQL 每个版本发布的新特性,尤其是跟 优化 器和SQL相关的,应该去关注和了解,可能会发现适合自己业务场景的特性。 我是敖丙,你知道的越多,你不知道的越多,我们下期见。

    1.7K 1 0