SQL优化之MySQL执行计划(Explain)及索引失效详解

1、执行计划基础

1.1、执行计划(Explain)定义

在 MySQL 中可以通过 explain 关键字模拟优化器执行 SQL语句,从而解析MySQL 是如何处理 SQL 语句的。

1.2、MySQL查询过程

  1. 客户端向 MySQL 服务器发送一条查询请求
  2. 服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段
  3. 服务器进行 SQL 解析、预处理、之后由优化器生成对应的执行计划
  4. MySQL 根据执行计划,调用存储引擎的 API 来执行查询
  5. 将结果返回给客户端,同时缓存查询结果

注意:只有在MySQL8.0之前才有查询缓存,MySQL8.0之后查询缓存被去掉了

1.3、启动执行计划

explain select 投影列 FROM 表名 WHERE 条件 ;

举例:

explain select * from teacher;

在这里插入图片描述

1.4、执行计划参数简介

在这里插入图片描述

2、实战解析

2.1、创建示例表

-- 课程表
create table course
(
cid int(3),
cname varchar(20),
tid int(3)
);
-- 教师表
create table teacher
(
    tid int(3),
    tname varchar(20),
    tcid int(3)
);
-- 教师证表
create table teacherCard
(
    tcid int(3),
    tcdesc varchar(200)
);

在这里插入图片描述
explain + select语句分析:

explain select * from teacher;

SQL执行计划结果:
在这里插入图片描述

2.2、执行计划参数详解

3、索引失效详解

3.1、索引失效情况

七字诀:模型数空运最快

  • 模:模糊查询LIKE以%开头
  • 型:数据类型错误
  • 数:对索引字段使用内部函数
  • 空:索引列是NULL
  • 运:索引列进行四则运算
  • 最:复合索引不按索引列最左开始查找
  • 快:全表查找预计比索引更快

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SecoClient接收返回码超时解决

第一步,Windows键进入"设置" 第二步,进入"更新与安全" 第三步,找到恢复,点击“高级启动”下的“立即重新启动”,重启电脑:(此时要记住以下步骤) 第四步,重启后选择“疑难解…

下定决心做增长了吗 ——《增长黑客》读后感1

关注我的公众号,并回复【增长黑客】可以获取我整理的《增长黑客》书籍大纲 前言 年中就看完《增长黑客》这本书了,收获还是蛮多的,但因为各种原因,导致我都没有好好做下总结。 前阵子做完总结之后,我就第一时间给组员…

真是性价比之王,腾讯云这款88元云服务器已经圈粉无数!

你是否曾经想过拥有一台属于自己的云服务器,但是却被高昂的价格和复杂的配置吓到了?现在,腾讯云推出了一款价格亲民、简单易用的88元云服务器,让你的梦想成为现实。腾讯云88元/年云服务器配置见下图: 腾讯云88元服务器…

第十六章 反射与注解

通过java的反射机制,程序员可以更深入的控制程序的运行过程。例如,可在程序运行时对象用户输入的信息进行验证,还可以逆向控制程序的执行过程,讲解了反射,另外java还提供了Annotation注解功能,该功能建立在…

Unreal Engine 学习笔记 (3)—— 导入资源

1.导入FBX文件 打开系统文件管理器按下鼠标左键拖动fbx文件到UE编辑器中松开鼠标左键在弹出对话框FBX导入选项页面中,选择对应的骨骼 重定向骨骼 拖动UE4的walk_strafe_back.fbx文件到UE5编辑器中 在弹出的FBX导入选项对话框中选择UE4对应的骨骼 使用重定向资产…

阿里云AIGC小说生成【必得京东卡】

任务步骤 此文真实可靠不做虚假宣传,绝对真实,可截图为证。 领取任务 链接(复制到wx打开):#小程序://ITKOL/1jw4TX4ZEhykWJd 教程实践 打开函数计算控制台 应用->创建应用->人工智能->通义千问 AI 助手-…

面试字节、美团、阿里等公司后,才知道软件测试面试题就这些...

一、Linux系统应用和环境配置 1、Linux系统的操作命令给我说10个,一般用什么工具远程连接Linux服务器? 2、Linux中的日志存储在哪里?怎么查看日志内容? 3、Linux中top和ps命令的区别? 4、Linux命令运行的结果如何写…

基于 Flink CDC 高效构建入湖通道

01Flink CDC 核心技术解析 Flink CDC 是基于数据库日志的 CDC 技术,实现了全增量一体化读取的数据集成框架。配合 Flink 优秀的管道能力和丰富的上下游生态,Flink CDC 可以高效实现海量数据的实时集成。 如上图所示,数据库表里有历史的全量数…

互联网按摩预约小程序开发;

随着移动互联网的普及,越来越多的人开始通过手机预约按摩服务。按摩预约小程序是一种方便快捷的预约方式,可以让用户随时随地预约按摩服务。那么,按摩预约小程序的开发周期要多久?按摩预约小程序的功能有哪些呢?本文将…

公司企业端口映射

文章目录 前言如何进行内网映射打开路由器管理网址设置端口映射 前言 公司为了提供稳定的网络服务,需要拥有一个稳定的IPV4的网络地址,一般公司有点规模的,会去电信局里面拉一根专门的网线,获取稳定的全球IPV4地址。 一个IPV4地…

求职招聘小程序源码系统+社交招聘+多城市招聘 带完整搭建教程

大家好,今天罗峰来给大家分享一款求职招聘小程序源码系统。目前,求职招聘市场在不断变革。传统的招聘网站已经无法满足人们对于高效、便捷、多元化的招聘需求。该系统集求职招聘、社交招聘、多城市招聘等功能于一体,旨在为用户提供更加便捷、…

Linux——手把手教你解决sudo指令无法使用的问题

解决sudo指令无法使用的问题 1. 为什么不能使用 sudo指令能够使某一条指令拥有root权限,即以root权限去执行 例如: sudo ls -l //就是以root权限查看当前目录里的内容但是,如果是新创建的普通账户,一般来说一开始是不能执行s…

Spark实战

系列文章目录 送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …

HDR 成像技术学习(四)

HDR(High Dynamic Range,高动态范围)仿佛是成像领域永恒的话题,动态范围越大,图像能清晰呈现的明暗差别也就越大。与传统的SDR(标准动态范围)相比,HDR图像能够以更高质量同时显示画面的亮部和暗部。 随这些年CMOS图像传感器工艺技术进步,以及后端数字信号处理算力的提升…

ECharts常用配置

1.使用: (1).下载引入 npm install echarts(版本号) --save import * as echarts from "echarts"; (2).准备一个DOM容器 (3).初始化echarts实例对象 echarts.init(document.getE…

Redis之缓存

文章目录 前言一、缓存使用缓存的原因 二、使用缓存实现思路提出问题 三、三大缓存问题缓存穿透缓存雪崩缓存击穿互斥锁实现逻辑过期时间实现 总结 前言 本篇文章即将探索的问题(以黑马点评为辅助讲解,大家主要体会实现逻辑) 使用redis缓存的…

【Cocos新手进阶】父级预制体中的数据列表,在子预制体中的控制方法!

本篇文章主要讲解,cocos中在预制体操作过程中,父级预制体生成的数据列表中,绑定了子预制体中的事件,在子预制体的时间中如何控制上级列表的具体操作教程。 日期:2023年11月10日 作者:任聪聪 一、实际效果情…

HarmonyOS NEXT 调优工具 Smart Perf Host 高效使用指南

在软件开发的过程中,很多开发者都经常会遇到一些性能问题,比如应用启动慢、点击滑动卡顿、应用后台被杀等,想要解决这些问题势必需要收集大量系统数据。而在收集数据的过程中,开发者则需要在各种工具和命令之间来回切换&#xff0…

LV.12 D17 中断控制器 学习笔记

一、中断控制器 在处理IRQ的时候,会将CPSR写入IRQ_SPSR,然后将CPU切换为IRQ模式,把状态改成ARM状态,把I位写成1禁止全部的IRQ,所以中断这样是我们不想要的。4412是一个四核的CPU,在发送中断前要确定发送给哪…

灵活调整宣传策略,媒体发稿和新闻发布的优势所在

企业在当今信息爆炸的时代,要想在市场竞争中脱颖而出,提高公信力是至关重要的。而媒体发稿和新闻发布是提升企业公信力的重要手段之一。下面将从门户网站的权威展示、搜索引擎排名的提升、内容的持续稳定有效性、内容的可改性以及协助增加网站流量等方面…