改了一行代码,MySQL查询效率提升了80%,老板奖了我50万
⭐前言
优化MySQL数据库是数据库管理员必备的技能,通过不同的优化方式方法来达到提高MySQL数据库性能的目的。
MySQL数据库当用户和数据量非常少的情况下,我们就很难判断MySQL数据库性能的好坏。只有当用户量与数据量大起来,MySQL的性能如何才能体现。查询是数据库最频繁的操作,提高查询速度可以有效地提高MySQL数据库的性能。
优化查询
⭐SHOW STATUS 语句查询MySQL数据库性能⭐
⭐分析查询语句⭐
⭐索引对查询速度的影响⭐
⭐LIKE 优化索引查询⭐
⭐使用多列索引⭐
⭐使用关键字or⭐
⭐SHOW STATUS 语句查询MySQL数据库性能⭐
我们可以使用 SHOW STATUS 语句查询MySQL数据库性能。
语法格式:
SHOW STATUS LIKE 'VALUE'
VALUE参数有如下几种
- Connection:连接MySQL服务器的次数。
- Uptime:MySQL服务器的上线时间。
- Slow_queries:慢查询次数。
- Com_select:查询操作的次数。
- Com_insert:插入操作的次数。
- Com_delete:删除操作的次数。
!通过这些参数我们可以分析MySQL数据库性能。然后根据分析结果,进行 相应的性能优化。
⭐分析查询语句⭐
可以使用EXPLAIN语句和DESCRIBE语句来分析查询语句。
语法格式:
#EXPLAIN 语法格式 EXPLAIN SELECT 语句;#DESCRIBE 语法格式 DESCRIBE SELECT 语句;
接下来分别对EXPLAIN和DESCRIBE进行介绍
使用EXPLAIN语句分析查询语句
其中各字段所代表的意义:
id:指出在整个查询中select的位置。
table:存放所查询的表名。
type:连接类型,该列中存储很多值,范围从const到All。
possible_keys:指出为了提高查找速度,在MySQL中可以使用的索引。
key:指出实际使用的键。
rows:指出MySQL需要在相应表中返回查询结果所检验的行数,为了得到该总行数,MySQL必须扫描处理整个查询,再乘以每个表的行值。
Extra:包含一些其他信息,设计MySQL如何处理查询。
使用DESCRIBE语句分析查询语句
DESCRIBE语句的使用方法与EXPLAIN语法是相同的,这两者的分析结果也大体相同。
⭐索引对查询速度的影响⭐
我们在查询的过程中使用索引,可以提高数据库查询效率,减少查询次数。接下来我们通过例子来对比一下使用索引和不使用索引对于查询速度的差异。
我们通过查询student表来分析使用索引和不使用索引的情况。
未使用索引的查询情况
explain select * from student where stuname = 'zhangsan';
分析:在未使用索引的情况下,我们发现原来表中的三条数据都被查询了一遍。这时会有人说,才三条数据有什么影响?当然,数据量很少的情况下,查询效率不会有太大差别。如果数据库中数据量庞大的时候,比如上千万条,那我们在查询的时候这上千万条数据都会被检索一遍,用户为了查询一条数据而遍历上千万条数据,将会消耗大量时间资源。
使用索引的查询情况
我们先给stuname字段加上索引
CREATE INDEX index_stuname ON student(stuname);
加上索引后我们在查询
explain select * from student where stuname = 'zhangsan';
分析:从上述结果可以看到,由于创建的索引使访问的行数由3减少到1,所以,在查询操作中,使用索引不但会优化查询效率,还会降低服务器的开销。
⭐LIKE 优化索引查询⭐
当第一个字符为“%”时,索引不会被使用,如果“%”所在匹配字符串中位置不是第一位置,则索引会被正常使用。
explain select * from student where stuname like 'zh%';
⭐使用多列索引⭐
多列索引在表的多个字段上创建一个索引,只有查询条件中使用了这些字段中的一个字段时,索引才会被正常使用。
创建多列索引
CREATE INDEX index_student ON student(stuname,stuage);
注意:我们在查询的时候如果应用stuage字段,索引不能被正常使用,必须使用第一字段stuname时,索引才正常生效。这点一定要记住!
⭐使用关键字or⭐
!在MySQL中,查询语句只有包含关键字or时,要求查询的两个字段必须同为索引,如果所搜索的条件中,有一个字段不为索引,则在查询中不会应用索引进行查询,索引不会生效,查询效率不会提升。
这篇文章如果对小伙伴们有帮助的话,希望点个赞支持一下~ 十分感谢~
改了一行代码,MySQL查询效率提升了80%,老板奖了我50万相关推荐
- c语言一行代码太长,C语言修改一行代码,运行效率居然提升数倍,这个技巧你知道吗...
对编译.链接.OS内核.系统调优等技术感兴趣的童鞋,不妨右上角关注一下吧,近期会持续更新相关方面的专题文章!引言 近日,网上看到一篇文章,分析数组访问的性能问题.文章经过一系列"有理有据&q ...
- 我就改了一行代码,为什么就全超时了?
Xargin:今年 6 月的 GopherChina,我去做一次会前培训,性能优化相关的主题,之前的社区分享没有讲的一些细节会展开来详细说.感兴趣的同学可以了解一下- 下面是宣传文: 为什么我只改了一 ...
- ElasticSearch + Kibana + logstash+ik结合springboot代码实现,比较ES和传统Mysql查询效率
开发环境:Win10 开发环境:STS 概要:此篇文章主要是传统的Mysql查询和ES查询两种方式的效率比较,以及代码实现,另外使用logstash进行mysql数据的同步也可以直接理解为" ...
- PHP 如何实现多进程 and mysql查询效率
首先我来说说这个我的需求吧. 需求: 有极少的用户来访问我的网页,但是一旦有用户访问,就会查询数据库,数据库是极大的.如果直接查询的话,那么耗时很长,为了节约时间,有很多工作需要做,其中一个就是多进程 ...
- 使用Apache Spark让MySQL查询速度提升10倍以上
作者:Alexander Rubin 链接:http://coyee.com/article/11012-how-apache-spark-makes-your-slow-mysql-queries- ...
- 阿里云图数据库GDB公测,高度连接数据查询效率提升10倍
3月21日,阿里云图数据库GDB正式公测,用于处理高度连接数据查询与存储,支持属性图模型,并且全面兼容TinkerPop Gremlin 查询语言. 图数据库覆盖的应用场景非常广泛,比较典型的有社交网 ...
- mysql 查询效率测试,mysql innode和myisam引擎查询性能比较测试
百度了一遍下来都在说myisam引擎的查询性能比innodb好,但是没有看到拿数据出来说话的,今天得空就做了下测试. 知识回顾 摘抄自:https://blog.csdn.net/STFPHP/art ...
- 如何提高mysql查询效率_如何提高MySQL查询效率
MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我在开发一个P2P应用的时候曾经使用MySQL来保存P2P节点,由于P2P的应用中,结点数动辄上万个,而且节点变化频繁,因此一 ...
- 梯度中心化,一行代码加速训练并提升泛化能力
来源 | 晓飞的算法工程笔记 优化器(Optimizer)对于深度神经网络在大型数据集上的训练是十分重要的,如SGD和SGDM,优化器的目标有两个:加速训练过程和提高模型的泛化能力.目前,很多工作研究 ...
最新文章
- IDEA键盘突然失去响应
- 迪士尼“新顶流”,火不到娱乐圈
- 分类算法——决策树(1)
- 欧洲最权威的12星座分析①
- 使用 Tye 辅助开发 k8s 应用竟如此简单(四)
- 将二进制文件bold转化为文件file
- java 开发环境的搭建
- SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)
- Http Ajax技术哪家强?Axios、Superagent、Request、Fetch、Supertest技能大比拼!
- sql azure 语法_在Azure中使用SQL Server 2016 CTP3
- elasticsearch报错exceptions.RequestError(400, u'mapper_parsing_exception', u'No handler field..
- Java集合框架总结
- 快速在越狱iphone手机下定位app安装包并且导出的方法
- 聚类的方法、原理以及一般过程
- Java Swing开发 Label标签 界面中文出现乱码解决方案
- matlab车牌自动定位,超级实用的车牌定位matlab程序
- intel DQ77KB 主板使用说明书
- android 自定义locale,关于android:设置Locale.setDefault(locale)后,如何获取手机语言?...
- 用不了chatgpt,试试Claude-Claude注册教程
- 通过证书管理解决无法连接 Citrix XenApp SSL 61 您还未选择信任证书颁发者的问题
热门文章
- C51存储器类型与51单片机的物理区域
- Oracle数据库游标操作
- [Leetcode][第99题][JAVA][恢复二叉搜索树][中序遍历]
- HDU-3664-Permutation Counting
- 华为云服务器安装win10系统,云服务器可以安装win10吗
- mvc怎么单独引用css文件,关于asp.net mvc:如何在剃刀视图中引用.css文件?
- android tv字体,best登陆「永久地址0365.tv」android默认字体android使用代码使用新的字体的常用代码...
- 金币问题c语言程序,【求助】急请c语言高手帮忙解决程序问题(问题已经被我自己解决,金币送给自己啦)...
- asm扩容流程_Oracle rac asm 扩容
- python 导入包 作用域_Python 包、模块、函数、变量作用域