改了一行代码,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参数有如下几种

  1. Connection:连接MySQL服务器的次数。
  2. Uptime:MySQL服务器的上线时间。
  3. Slow_queries:慢查询次数。
  4. Com_select:查询操作的次数。
  5. Com_insert:插入操作的次数。
  6. Com_delete:删除操作的次数。

通过这些参数我们可以分析MySQL数据库性能。然后根据分析结果,进行 相应的性能优化。



⭐分析查询语句⭐

可以使用EXPLAIN语句和DESCRIBE语句来分析查询语句。

语法格式:

#EXPLAIN 语法格式
EXPLAIN  SELECT 语句;#DESCRIBE 语法格式
DESCRIBE SELECT 语句;

 接下来分别对EXPLAINDESCRIBE进行介绍

使用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时,要求查询的两个字段必须同为索引,如果所搜索的条件中,有一个字段不为索引,则在查询中不会应用索引进行查询,索引不会生效,查询效率不会提升。


这篇文章如果对小伙伴们有帮助的话,希望点个赞支持一下~      十分感谢~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#进阶之WebAPI(二)

今天学习一下:WebAPI如何使用呢? 首先我们打开vs新建一个WebAPI项目,可以看到一共有这些文件夹目录 首先了解一下这些文件夹/文件的意义(按照程序启动的流程,相关的配置项就不说了), Global.as…

字节一面 —— List 和 Map、Set 的区别

马上就要到金三银四佳季了,是找工作的好时候,小伙伴们一定要把握好时机,找到心仪的高薪工作。找工作就少不了面试,那我们从现在开始,多刷刷面试题,查缺补漏!!! 目录 ⭐常…

C#进阶之WebAPI(三)

今天复习一下WebAPI的路由知识: 首先分析一下MVC路由和WebAPI路由的区别: 在mvc里,默认的路由机制是通过URL路径去匹配控制器和Action方法的,在mvc中的默认路由定义在App_Start文件夹下的RouteConfig.cs文件下: publ…

阿里一面 —— HTTP中重定向和请求转发的区别?

马上就要到金三银四佳季了,是找工作的好时候,小伙伴们一定要把握好时机,找到心仪的高薪工作。找工作就少不了面试,那我们从现在开始,多刷刷面试题,查缺补漏!!! 目录 ⭐T…

C#异步编程-------异步编程模型(APM)

术语解释: APM 异步编程模型, Asynchronous Programming Model EAP 基于事件的异步编程模式, Event-based Asynchronous Pattern TAP 基于任务的异步编程模式, Task-based Asynch…

【LeetCode-SQL每日一练】—— 627. 变更性别

🎈写在前面 🙋‍♂️大家好呀,我是超梦。大家可以叫我小梦~ 又到了练习SQL的时候啦!一起来学习吧! 🙋‍♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问,小梦定知无…

iis运行原理 Asp.Net详解IIS内部运行原理

本章节主要讲IIS和 管道内部如何处理客户端Http请求,会较多的以代码的形式讲述,让大家对HttpApplication、HttpHandler、HttpApplicationFactory、Page这几个在处理请求过程中扮演重要角色的对象有更深入的了解。 下面我们通过单步调式跟踪System.Web.D…

【LeetCode-SQL每日一练】—— 1179. 重新格式化部门表

🎈写在前面 🙋‍♂️大家好呀,我是超梦。大家可以叫我小梦~ 又到了练习SQL的时候啦!一起来学习吧! 🙋‍♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问,小梦定知无…

阿里一面 —— 什么是多线程?

马上就要到金三银四佳季了,是找工作的好时候,小伙伴们一定要把握好时机,找到心仪的高薪工作。找工作就少不了面试,那我们从现在开始,多刷刷面试题,查缺补漏!!! 目录 ⭐什…

第九节:JWT简介和以JS+WebApi为例基于JWT的安全校验

一. 简介 1. 背景 传统的基于Session的校验存在诸多问题,比如:Session过期、服务器开销过大、不能分布式部署、不适合前后端分离的项目。 传统的基于Token的校验需要存储Key-Value信息,存在Session或数据库中都有弊端,如果按照一…

赢在CSDN —— 我们一起向前

赢在CSDN,一起向前! ⭐初遇CSDN ⭐我也成为了一名创作博主 ⭐如何在CSDN赚到一桶金 ⭐CSDN带给自己的成长 ⭐对CSDN的期待 ⭐个人创作的规划 ⭐初遇CSDN 不知不觉来到CSDN已经有1379天的时间啦,时间过得好快呀!记得刚踏进CS…

volatile关键字的作用-适用场景

volatile在Java并发编程中常用于保持内存可见性和防止指令重排序。内存可见性(Memory Visibility):所有线程都能看到共享内存的最新状态;防止指令重排:在基于偏序关系的Happens-Before内存模型中,指令重排技…

MySQL你掌握了多少?这些SQL题你能作对几道?

MySQL是工作中常用数据库,必须掌握,但小伙伴们又掌握了多少呢,今天一起来测试一下吧~ 力扣SQL ⭐组合两个表 ⭐第二高的薪水 ⭐超过经理收入的员工 ⭐查找重复的电子邮箱 ⭐从不订购的客户 ⭐大的国家 ⭐删除重复的电子邮箱 ⭐有趣的…

mybatis配置文件加注释报错怎么办?改一笔就能帮你解决

今天配置mybatis写了一个小demo,本以为顺顺利利的就完成了,没想到就报了如下错误。直接emo了。 java.lang.ExceptionInInitializerErrorat com.lm.learn.dao.UserTest.getUsers(UserTest.java:14)at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ…

第十二节:深究内核模式锁的使用场景(自动事件锁、手动事件锁、信号量、互斥锁、读写锁、动态锁)

一. 整体介绍 温馨提示:内核模式锁,在不到万不得已的情况下,不要使用它,因为代价太大了,有很多种替代方案。 内核模式锁包括: ①:事件锁 ②:信号量 ③:互斥锁 ④&#xf…

玩转Mybatis —— 一个小demo,带你快速入门Mybatis

目录 🤞Mybatis官网介绍 🤞Mybatis安装 🤞Mybatis核心配置文件 🤞构建 SqlSessionFactory 🤞获取 SqlSession 🤞通过 XML 定义已映射的 SQL 语句 🤞作用域(Scope)…

MySQL掌握的怎么样?听说这几道MySQL面试题没有几个人能答得出来

MySQL可谓是程序员必备技能,怎么检测自己掌握了多少呢,一起来测试一下吧!一共12个关卡,看看你能闯到第几关? 目录 什么是左外链接,什么是右外链接? 分页关键字是什么? Select 语句…

IIS/ASP.NET 管道

ASP.NET MVC 是建立在 ASP.NET 平台上基于 MVC 模式的 Web 应用框架,深刻理解 ASP.NET MVC 的前提是对 ASP.NET 管道式设计具有深刻的认识。由于 ASP.NET Web 应用大都寄宿于 IIS 上,将两者结合起来了解在 IIS 和 ASP.NET 管道中是如何流动的。 IIS5.x与…

【JAVA知识点每日一练】 —— 运算符的那些事

都说基础不牢地动山摇,还真是那么回事!别小看这运算符,每个语法中运算符扮演者举足轻重的角色,稍微没用对,那可就犯了大错误! 接下来跟随小梦,迈着轻松且愉快的步伐一起看看运算符的那些事吧~ 运…

ASP.NET Core管道深度剖析[共4篇]

在《管道是如何处理HTTP请求的?》中,我们对ASP.NET Core的请求处理管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的。这样一个管道由一个服务器和一个HttpApplication构成&#xff0c…