mysql like性能优化
网上很多优化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性能优化相关推荐
- DBA很忙—MySQL的性能优化及自动化运维实践
作者:王辰 来自:高效运维(ID:greatops) DBA的日常工作 首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用,这是我们 D ...
- MySQL数据库性能优化之一
MySQL数据库性能优化需要考虑的几个方面: 1.sql语句及索引优化 2.数据库结构优化 3.系统配置优化 4.硬件优化 转载于:https://blog.51cto.com/davidlinux/ ...
- mysql 改表面_MySQL_解析MySQL数据库性能优化的六大技巧,数据库表表面上存在索引和防 - phpStudy...
解析MySQL数据库性能优化的六大技巧 数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员 ...
- 淘宝内部分享:MySQL MariaDB性能优化
淘宝内部分享:MySQL & MariaDB性能优化 摘要:MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,必须进行不断的优化,而优化是一个复杂的任务, ...
- MySQL主从复制性能优化
MySQL主从复制性能优化 MySQL的主从复制的基本原理是从库连接到主库,主库生成一个主库DUMP线程,该DUMP线程的主要任务是 一直挖掘binlog日志,然后发送到从库的IO线程,IO线程接收到 ...
- #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
Linux + JVM + Mysql高级性能优化课程 课程名称: Linux + JVM + Mysql高级性能优化 QQ群: 243242580(小白.菜鸟勿进)跟Java.M ...
- MySQL 数据库性能优化之SQL优化
2019独角兽企业重金招聘Python工程师标准>>> MySQL 数据库性能优化之SQL优化 发布时间: 2012 年 3 月 21 日 发布者: OurMySQL 来源:简朝阳 ...
- MySQL数据库性能优化的关键参数(转)
我们在进行数据库管理和开发中经常会遇到性能问题,这就涉及到MySQL的性能优化.通过在网络上查找资料和笔者自己的尝试,我认为以下系统参数是比较关键的: 关键参数一:back_log 要求 MySQL ...
- MySQL数据库性能优化史诗级大总结
点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好 ...
- MySQL索引性能优化
01.MySQL:性能优化方案 在应用开发的过程中,由于前期数据量少,开发人员编写的SQL语句或者数据库整体解决方案都更重视在功能上的实现,但是当应用系统正式上线后,随着生成数据量的急剧增长,很多SQ ...
最新文章
- torch.nn.Embedding理解
- mysql的学习总结
- [OS复习]进程管理4
- DCMTK:演示状态的VR和IOD检查器
- 【读书笔记】沉默的大多数
- vb获取textbox数字_Spectrum仪器PCIe数字化仪可额外扩展8个数字输入
- stm32l0的停止模式怎么唤醒_最强家庭娱乐系统+儿童模式,小度在家智能屏X8开售抢先体验...
- 水晶报表加载失败的解决方法
- [转载] 1.1Java使用JDBC原生方式连接MySql数据库
- Zen Garden驾到:首批Metal游戏已登录iTunes应用商店
- .vimrc示例文件
- 浮点错误的意思-PAT 、OJ
- oracle 包和包体禁用,Oracle包和包体以及与非包体定义函数、过程的区别
- 21. Magento 创建新闻模块(2)
- 新闻丨智链万源受邀参加世界动物福利科学大会
- 正则过滤 emoji
- Multisim14.0软件安装+破解
- html求相关系数,皮尔森相关系数怎么看 相关系数多少算具有相关性?
- 真随机数 c语言编程,C语言真正获取随机数
- word怎么让封面、目录没有页码,页码从正文开始