【 第八章 SQL执行效率,慢日志查询,profile,explain,最左前缀法则,范围查询】

news2024/11/16 3:27:53

第八章 SQL执行效率,慢日志查询,profile,explain,最左前缀法则,范围查询

1.SQL执行效率:
MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次:

-- session 是查看当前会话 ; 
-- global 是查询全局数据 ; 
SHOW GLOBAL STATUS LIKE 'Com_______';

在这里插入图片描述
Com_insert: 插入次数
Com_select: 查询次数
Com_update: 更新次数
2.慢日志查询:
①慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志。
②MySQL的慢查询日志默认没有开启,我们可以查看一下系统变量 slow_query_log

show variables like 'slow_query_log';#on为开启,off为关闭

③如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

# 开启MySQL慢日志查询开关
slow_query_log=1
# 设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志
long_query_time=2

④配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息
/var/lib/mysql/localhost-slow.log。

systemctl restart mysqld

3.profile详情:
①show profiles 能够在做SQL优化时帮助我们了解时间都耗费到哪里去了,通过have_profiling参数,能够看到当前MySQL是否支持profile操作:

select @@have_profiling;# yes为支持
select @@profiling;#0为开关关闭

②可以通过set语句在session/global级别开启profiling:

set profiling=1;

③执行一系列的业务SQL的操作,然后通过如下指令查看指令的执行耗时:

-- 查看每一条SQL的耗时基本情况
show profiles;
-- 查看指定query_id的SQL语句各个阶段的耗时情况
show profile for query query_id;
-- 查看指定query_id的SQL语句CPU的使用情况
show profile cpu for query query_id;

4.explain:
①EXPLAIN 或者 DESC命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序。

-- 直接在select语句之前加上关键字 explain / desc
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件 ;

②例如:

explain select * from tb_user where id = 1;

在这里插入图片描述③Explain 执行计划中各个字段的含义:
在这里插入图片描述5.最左前缀法则:
①如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将会部分失效(后面的字段索引失效)。
②以 tb_user 表为例,我们先来查看一下之前 tb_user 表所创建的索引:在 tb_user 表中,有一个联合索引,这个联合索引涉及到三个字段,顺序分别为:profession,age,status。

show  index from tb_user;

在这里插入图片描述
③案例:

1explain select * from tb_user where profession = '软件工程' and age = 31 and status= '0';

在这里插入图片描述

2explain select * from tb_user where profession = '软件工程' and age = 31

在这里插入图片描述

3explain select * from tb_user where profession = '软件工程';

在这里插入图片描述
可以推测出profession字段索引长度为47、age字段索引长度为2、status字段索引长度为5。

注意 : 最左前缀法则中指的最左边的列,是指在查询时,联合索引的最左边的字段(即是第一个字段)必须存在,与我们编写SQL时,条件编写的先后顺序无关。

4explain select * from tb_user where age = 31 and status = '0' and profession = '软件工程';

在这里插入图片描述
6.范围查询:
①联合索引中,当范围查询使用> 或 < 时,走联合索引了,但是索引的长度为49,就说明范围查询右边的status字段是没有走索引的。

1explain select * from tb_user where profession = '软件工程' and age > 30 and status='0';

在这里插入图片描述
②当范围查询使用>= 或 <= 时,走联合索引了,但是索引的长度为54,就说明所有的字段都是走索引的。

2explain select * from tb_user where profession = '软件工程' and age >= 30 and
status = '0';

在这里插入图片描述
在业务允许的情况下,尽可能的使用类似于 >= 或 <= 这类的范围查询,而避免使用 > 或 <。

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

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

相关文章

微服务框架 SpringCloud微服务架构 26 数据聚合 26.1 聚合的分类

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构26 数据聚合26.1 聚合的分类26.1.1 聚合的分类26.1.2 总结26 数据聚合 26…

基础入门 - SpringBoot 自动配置

目录 3、自动配置原理入门 3.1、引导加载自动配置类 1、SpringBootConfiguration 2、ComponentScan 3、EnableAutoConfiguration 1、AutoConfigurationPackage 2、Import(AutoConfigurationImportSelector.class) 3.2、按需开启自动配置项 3.3、修改默认配置 1、自动配…

写作人的福音——obsidian非官方插件之senGener

背景 之前的是转发作者的项目文档&#xff0c;这次应作者要求&#xff0c;写了个试用报告。 刚用这个插件的时候&#xff0c;还磕磕碰碰&#xff0c;总有点小问题&#xff0c;按快捷键不反应&#xff0c;服务器崩溃什么的&#xff0c;并不指望真的用起来&#xff0c;权当个玩具…

【Mysql】当Naviact创建数据库时失败出现1044 -Access denied for user ‘root‘@‘%‘ to database

业务背景&#xff1a;当我用Navicat连接我服务器上的MySQL8&#xff0c;然后点击创建数据库时&#xff0c;创建失败&#xff0c;并报异常 1044 -Access denied for user root% to database解决方案&#xff1a;本问题是因为&#xff0c;账号无权限导致的&#xff0c;因此只需要…

C语言实现一个闪烁的圣诞树(控制台)

下下下周就是圣诞节啦&#xff0c;C语言的圣诞树必须安排起&#xff01;&#xff01;&#xff01; 效果展示&#xff1a; 原理说明&#xff1a; 函数 layer 画出树的层次&#xff0c;根据坐标来输出位置&#xff1b; void layer(int x, int y, int num, int col) 函数 tri…

毕业设计-基于大数据的电影推荐系统-python

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

(七) Docker安装常规软件

Docker安装常规软件一、安装tomcat1、docker hub上面查找tomcat镜像2、从docker hub上拉取tomcat镜像到本地3、docker images查看是否有拉取到的tomcat4、使用tomcat镜像创建容器实例5、访问Tomcat首页6、拉取这个版本不需要去修改Webapps目录&#xff08;免修改版&#xff09;…

在Python中自然语言处理生成词云WordCloud

了解如何在Python中使用WordCloud对自然语言处理执行探索性数据分析。 最近我们被客户要求撰写关于自然语言处理的研究报告&#xff0c;包括一些图形和统计输出。 什么是WordCloud&#xff1f; 很多时候&#xff0c;您可能会看到一片云&#xff0c;上面堆满了许多大小不同的单…

花了1块钱体验一把最近很火的ChatGPT

前言 最近 OpenAI 发布了 ChatGPT&#xff0c;一经发布就在科技圈火得不行。 ChatGPT是什么呢&#xff1f; 简单得说&#xff0c;ChatGPT&#xff0c;是一种基于对话的 AI 聊天工具。我们来看看ChatGPT自己得回答。 下面是在ChatGPT注册成功后&#xff0c;正常使用后的截图 …

代码随想录训练营day57, 回文子串, 回文子序列

回文子串 计算这个字符串中有多少个回文子串 动态规划 数组定义: 表示区间[i,j]的资产是否为回文子串, 如果是dp[i][j]则为true, 否为false递推: 整理来说就是两种, s[i]和s[j]相等或者不相等 相等有三种情况 下标i与j相同, 同一个字符例如a, b下标差一位, 那就是aa, bb下标…

Unity3D2020+导出Android工程中使用并交互

, 目录 1&#xff0c;版本信息 2&#xff0c;前期准备 Unity方面&#xff1a; Android方面&#xff1a; 3&#xff0c;Android与Unity3D交互 1&#xff0c;版本信息 unity2020 android studio 2021 *不要用android studio 2020系列&#xff0c;存在不能导入Library的b…

从Eureka到Polaris,好未来AI中台注册中心是如何实现0代码迁移的

导语&#xff1a;2021年&#xff0c;好未来的AI 中台业务规模激增&#xff0c;日调用量超6亿&#xff0c;总调用量上千亿。业务的快速发展给中台的现有技术架构带来一定的冲击。好未来AI中台是微服务架构&#xff0c;完成一个业务请求涉及多个服务之间相互调用&#xff0c;可以…

DVWA靶场下的xss漏洞练习及分析

目录 JavaScript操作cookie 反射型xss漏洞 存储型xss漏洞 JavaScript操作cookie 1.alert(document.cookie)&#xff1b; 2.document.cookie"coleak"; 3.document.cookie"modify"; 反射型xss漏洞 low级别 <script>alert(11)</script> med级别…

知识点10--Docker的DockerFile

Docker有两种镜像生成的方式&#xff0c;供我们在打包自己的环境时选择&#xff0c;前面的知识点都提到过&#xff0c;分别是commit和DockerFile build&#xff0c;两者的区别就在于commit使用自己已有的容器生成&#xff0c;而DockerFile是直接通过操作基础镜像来生成&#xf…

树——算法专项刷题(八)

八、树 主要是对二叉树的前、中、后、层序遍历的应用 &#xff08;这四种遍历详见 二叉树遍历&#xff09; 8.1二叉树的最近公共祖先 原题链接 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 例如&#xff0c;给定如下二叉树: root [3,5,1,6,2,0,8,null,null,…

Kamiya艾美捷环丁烷嘧啶二聚体CPD相关说明

CPD学名环丁烷嘧啶二聚体&#xff0c;是紫外线照射后DNA损伤的产物&#xff0c;通过免疫组化检测&#xff0c;可以很明显地看出CPD含量变化——CPD的含量越高&#xff0c;代表DNA损伤越严重。因此可以通过CPD含量变化来检测待测物的抗皱功效。 环丁烷嘧啶二聚体&#xff1a;紫外…

m对比PSO,WPA,GWPA以及GWO四种优化算法的优化性能,优化目标函数为10个来自CEC2017的标准测试函数

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 灰狼优化算法(GWO),灵感来自于灰狼.GWO算法模拟了自然界灰狼的领导层级和狩猎机制.四种类型的灰狼,如 α,β,δ,w 被用来模拟领导阶层。此外&#xff0c;还实现了狩猎的三个主要步骤:寻找猎物、包…

活动报名丨泛娱乐社交产品,存量破局方法论

「网易 MCtalk 娱乐社交公开课」网易 MCtalk 娱乐社交公开课是网易云信自主开发的面向从事娱乐社交产品开发、运营、市场推广等工作岗位的实战公开课。公开课通过邀请网易内外部行业技术专家、产品经理以及投放和市场负责人&#xff0c;结合多年实践经验&#xff0c;围绕娱乐社…

难倒90%英雄的阿里对象继承面试题 ,看看你答的对吗?

思考下面的输出结果 class Father {int x 10;public Father() {System.out.println("Father " x);this.print();x 20;}public void print() {System.out.println("Father.x " x);} } class Son extends Father {int x 30;public Son() {System.out.…

跨设备链路聚合 M-LAG配置案例

组网需求 如下图所示&#xff0c;通过配置M-LAG双归接入IP网络可以满足以下要求&#xff1a; ​当一条接入链路发生故障时&#xff0c;流量可以快速切换到另一条链路&#xff0c;保证可靠性。 为了高效利用带宽&#xff0c;两条链路同时处于active状态&#xff0c;可实现使用…