网上很多优化like的方法,无非下面几种,抄来抄去的。

我用213万条数据,每条数据50个字段左右(用的真实的生产环境的mysql数据库,和真实的生产环境的数据),做了性能测试;时间记录的次数不多,但是基本都做了10次左右,时间误差不大的,就只记录了3次,结果如下:

结论:

1.LOCATE,INSTR,REGEXP三个函数,效果在like面前没有任何优势。(那些说有明显优势的,难道是用远超213万条数据测试出来的?)

2.效果好坏,取决于能不能用上索引。

3.like,如果要用,那用左匹配,效果是最好的,因为可以用上索引,其他的方式,索引会失效的,速度自然很低。

4.并没有发现什么有效的优化方式。

5.搜索业务,数据量大,不如直接用专业的搜索引擎,比如es之类的。

-- 6015ms   5996ms  6008ms  不用索引SELECT * FROM `ent_file` WHERE `ent_name` LIKE CONCAT('%','奥的斯','%');EXPLAIN SELECT * FROM `ent_file` WHERE `ent_name` LIKE CONCAT('%','飞鸣','%');-- 5975ms  6037ms  5987ms  不用索引
EXPLAIN  SELECT * FROM `ent_file` WHERE `ent_name` LIKE CONCAT('%','有限公司');-- 2ms 2ms 用索引
SELECT * FROM `ent_file` WHERE `ent_name` LIKE CONCAT('杭州飞鸣','%');
-- 2ms 2ms  用索引
EXPLAIN  SELECT * FROM `ent_file` WHERE `ent_name` LIKE CONCAT('浙江君时','%');-- 6265ms  6209ms  不用索引
SELECT * FROM `ent_file` a WHERE LOCATE('杭州飞鸣',a.`ent_name` ) > 0;-- 6289ms   6234ms  不用索引
EXPLAIN  SELECT * FROM `ent_file` a WHERE LOCATE('奥的斯',a.`ent_name` ) > 0;
-- 6322ms   6377ms  不用索引
EXPLAIN  SELECT * FROM `ent_file` a WHERE INSTR(a.`ent_name`,'奥的斯') > 0;-- 5ms 3ms 31ms 4ms  不用索引
EXPLAIN  SELECT * FROM `ent_file` a WHERE a.`ent_name`  REGEXP '^杭州' ;-- 87ms 78ms 75ms  不用索引
EXPLAIN  SELECT * FROM `ent_file` a WHERE a.`ent_name`  REGEXP '有限责任公司$' ;- 6056ms  6032ms 不用索引
EXPLAIN  SELECT * FROM `ent_file` a WHERE a.`ent_name`  REGEXP '集团$' ;
-- 这个reverse方式,效果也不明显
SELECT * FROM `ent_file` a WHERE REVERSE(a.`ent_name`) LIKE REVERSE(CONCAT('%','奥的斯')) or a.`ent_name` LIKE CONCAT('奥的斯','%');-- 表级锁 情况
SHOW STATUS LIKE 'table%';
-- 行级锁 情况
SHOW STATUS LIKE 'innodb_row_lock%';-- 进程列表
SHOW PROCESSLIST ;SHOW STATUS ;

mysql like性能优化相关推荐

  1. DBA很忙—MySQL的性能优化及自动化运维实践

    作者:王辰 来自:高效运维(ID:greatops) DBA的日常工作 首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用,这是我们 D ...

  2. MySQL数据库性能优化之一

    MySQL数据库性能优化需要考虑的几个方面: 1.sql语句及索引优化 2.数据库结构优化 3.系统配置优化 4.硬件优化 转载于:https://blog.51cto.com/davidlinux/ ...

  3. mysql 改表面_MySQL_解析MySQL数据库性能优化的六大技巧,数据库表表面上存在索引和防 - phpStudy...

    解析MySQL数据库性能优化的六大技巧 数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员 ...

  4. 淘宝内部分享:MySQL MariaDB性能优化

     淘宝内部分享:MySQL & MariaDB性能优化 摘要:MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,必须进行不断的优化,而优化是一个复杂的任务, ...

  5. MySQL主从复制性能优化

    MySQL主从复制性能优化 MySQL的主从复制的基本原理是从库连接到主库,主库生成一个主库DUMP线程,该DUMP线程的主要任务是 一直挖掘binlog日志,然后发送到从库的IO线程,IO线程接收到 ...

  6. #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)

    Linux + JVM + Mysql高级性能优化课程 课程名称:      Linux + JVM + Mysql高级性能优化 QQ群:      243242580(小白.菜鸟勿进)跟Java.M ...

  7. MySQL 数据库性能优化之SQL优化

    2019独角兽企业重金招聘Python工程师标准>>> MySQL 数据库性能优化之SQL优化 发布时间: 2012 年 3 月 21 日  发布者: OurMySQL 来源:简朝阳 ...

  8. MySQL数据库性能优化的关键参数(转)

    我们在进行数据库管理和开发中经常会遇到性能问题,这就涉及到MySQL的性能优化.通过在网络上查找资料和笔者自己的尝试,我认为以下系统参数是比较关键的: 关键参数一:back_log 要求 MySQL ...

  9. MySQL数据库性能优化史诗级大总结

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好 ...

  10. MySQL索引性能优化

    01.MySQL:性能优化方案 在应用开发的过程中,由于前期数据量少,开发人员编写的SQL语句或者数据库整体解决方案都更重视在功能上的实现,但是当应用系统正式上线后,随着生成数据量的急剧增长,很多SQ ...

最新文章

  1. torch.nn.Embedding理解
  2. mysql的学习总结
  3. [OS复习]进程管理4
  4. DCMTK:演示状态的VR和IOD检查器
  5. 【读书笔记】沉默的大多数
  6. vb获取textbox数字_Spectrum仪器PCIe数字化仪可额外扩展8个数字输入
  7. stm32l0的停止模式怎么唤醒_最强家庭娱乐系统+儿童模式,小度在家智能屏X8开售抢先体验...
  8. 水晶报表加载失败的解决方法
  9. [转载] 1.1Java使用JDBC原生方式连接MySql数据库
  10. Zen Garden驾到:首批Metal游戏已登录iTunes应用商店
  11. .vimrc示例文件
  12. 浮点错误的意思-PAT 、OJ
  13. oracle 包和包体禁用,Oracle包和包体以及与非包体定义函数、过程的区别
  14. 21. Magento 创建新闻模块(2)
  15. 新闻丨智链万源受邀参加世界动物福利科学大会
  16. 正则过滤 emoji
  17. Multisim14.0软件安装+破解
  18. html求相关系数,皮尔森相关系数怎么看 相关系数多少算具有相关性?
  19. 真随机数 c语言编程,C语言真正获取随机数
  20. word怎么让封面、目录没有页码,页码从正文开始

热门文章

  1. 【转载】传承17年经典 极品飞车历代经典车赏析
  2. L2-016 愿天下有情人都是失散多年的兄妹 (25 分)(dfs
  3. 计算机联锁设备的日常维护,双捷站计算机联锁设备维护作业标准.docx
  4. 2023华为od机试真题B卷【通过软盘拷贝文件】Java 实现
  5. 应用层——(计网第7版 谢xr)
  6. ms08-067漏洞的复现及所遇到的问题分析
  7. 【分享】世界第一 TotalCMD全能文件管理器
  8. 三星发布新款智能硬件Family Hub
  9. css 固定图片尺寸16:9
  10. ByteBuffer的allocate和allocateDirect