Mysql的索引详解

1.索引的分类

1.按照功能来分,可以分为主键索引、唯一索引、普通索引、全文索引
2.按照索引字段个数来分,可以分为单列索引、联合索引
3.按照物理实现方式来分,可以聚簇索引、非聚簇索引

2.适合添加索引的场景

1.具有唯一性约束的字段。
2.频繁地作为where查询条件的字段,包括select/update/delete。
3.需要gruop by 或 order by的字段
4.distinct字段需要添加索引(实测在数据量小的情况下意义不大)
5.多表连接join时需要注意的事项:连接表的张数最好不要超过3张,对where条件的字段增加索引,对于两表之间的关联字段,被关联表的该字段需要有索引且字段在两表中的属性保持一致。
6.区分度高的字段适合作为索引,反之则不适合。举例:性别字段就两种类型,这种区分度就很低,不适合作为索引。我们常用的xxId,一般来说这种id都是唯一的,每个人的id都不一样,这种区分度就是100%,非常适合作为索引。

3.慢sql分析

可以开启慢sql日志,然后分析慢sql日志中的慢sql。
在my.cnf中开启慢sql日志:
long_query_time=1; //设置慢查询的标准是1S,超过1S就是慢查询。
slow_query_log=ON; //设置开启慢查询日志记录

4.profile分析

对于慢查询sql,可以使用profile工具进行分析,确定SQL主要耗时是在什么步骤。
show profiles; //查询最近的一些sql
在这里插入图片描述
show profile for query 704; //展示我们需要查询的sql的详细耗时情况

在这里插入图片描述
可以看到上述sql耗时主要在executing步骤,也就是执行阶段。这种时候就需要explain一下sql,查看具体的执行计划进行分析。

5.explain分析

在这里插入图片描述
可以看到上述sql走了name索引,Using index表示是走了覆盖索引,但是还是耗时很长,最主要的原因就是扫描的行太多了,也就是rows字段,多达9307475行,就是数据量太大导致的耗时长。

5.1 explain重要关键字分析

explain的关键字还挺多的,每个关键字的各种情况分析也有点复杂,我们只需要记住最重要的几个关键字即可。下图是一个explain的所有关键字。
在这里插入图片描述

5.1.1 type

执行计划的一条记录代表的是MySQL对于某个表的执行查询时的访问方法,又称访问类型,其中type列就表明这个访问方法是啥。比如上面看到的type值是ref,表明mysql是使用ref访问方法来执行上述sql。
访问方法的所有值如下:system、const、eq_ref、ref、fulltext、ref_or_null、index_merge、unique_subquery、index_subquery、range、index、ALL
从前往后,查询速度越来越慢,ALL就代表全表扫描,是最慢的情况。

5.1.1.1 system

当使用精确统计的表,且表内只有一条记录时,进行的查询会是system。

5.1.1.2 const

当使用主键索引或者唯一索引对某个常量进行等值匹配时,进行的查询会是const,这种情况只会匹配一行记录。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

医药行业:轻松学会超低温冰箱技能

超低温冰箱在医疗、科研和生物领域中扮演着至关重要的角色,用于存储和保护对温度极为敏感的样品和药品。 然而,由于这些冰箱内的温度波动可能导致样品的损坏,因此对超低温冰箱的监控变得至关重要。 客户案例 医疗研究机构 上海某医疗研究机…

YOLOv7独家原创改进:创新自研CPMS注意力,多尺度通道注意力具+多尺度深度可分离卷积空间注意力,全面升级CBAM

💡💡💡本文自研创新改进:自研CPMS, 多尺度通道注意力具+多尺度深度可分离卷积空间注意力,全面升级CBAM 1)作为注意力CPMS使用; 推荐指数:五星 CPMS | 亲测在多个数据集能够实现涨点,对标CBAM。 收录 YOLOv7原创自研 https://blog.csdn.net/m0_63774211/ca…

外包干了4年,技术退步太明显了。。。。。

先说一下自己的情况,本科生生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

Docker容器(一)概述

一、虚拟化概述 1.1引⼊虚拟化技术的必要性 服务器只有5%的时间是在⼯作的;在其它时间服务器都处于“休眠”状态. 虚拟化前 每台主机⼀个操作系统; 软硬件紧密结合; 在同⼀个主机上运⾏多个应⽤程序通常会遭遇冲突; 系统的资源利⽤率低; 硬件成本⾼昂⽽且不够灵活…

金蝶云星空单据体明细权限和表单插件操作事件的先后顺序

文章目录 金蝶云星空单据体明细权限和表单插件操作事件的先后顺序顺序说明结论 金蝶云星空单据体明细权限和表单插件操作事件的先后顺序 顺序说明 先分录菜单单击事件EntryBarItemClick 再验权 后表单操作执行事件BeforeDoOperation 结论 如果是需要鉴权通过才允许操作的逻辑…

万界星空科技仓库管理wms系统

企业在管理库存时,尤其是生产制造企业,使用传统方式比如纸笔、Excel 管理库存,由于工具和信息化存在局限,导致在管理库存时出现如下问题: 1、通过纸笔记录出入库申请,人为手动计算易出错,数据易…

全球与中国HDPE管道市场:增长趋势、竞争格局与前景展望

快速成长的人口、快速的经济成长和工业发展增加了对可靠供水系统的需求。工业需要为制造流程、冷却系统和卫生目的提供可靠的水供应。随着国家的发展,它们更加重视基础设施,包括供水系统,以支持工业成长。HDPE管道广泛应用于饮用水和灌溉的配…

医院不良事件报告系统源码带鱼骨图分析

医院不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”,结合预存上百套已正在使用的模板,帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件…

CentOS系列:【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细)

CentOS7操作系统安装nginx实战(多种方法,超详细) 一. 实验环境二. 使用yum安装nginx2.1 添加yum源2.1.1 使用官网提供的源地址(方法一)1. 找到官网的源2. 使用rpm -ivh 进行安装3. 安装完成之后查看源: 2.1…

三十七、XA模式

目录 一、XA模式原理 在XA模式中,一个事务通常被分为两个阶段: 二、Seata的XA模式 RM一阶段的工作: TC一阶段的工作: RM二阶段的工作: 1、优点: 2、缺点: 三、实现XA模式 1、修改yml文…

数据结构实验任务六 :基于 Dijsktra 算法的最短路径求解

本次代码为实验六:基于 Dijsktra 算法的最短路径求解实现。本实验的重点在于对于Dijsktra算法的理解。有关Dijsktra的资料可以参考有关博文: 图论:Dijkstra算法——最详细的分析,图文并茂,一次看懂!-CSDN博客 以下附上…

Vision Transformer

Vision Transformer详解-CSDN博客 视频:11.1 Vision Transformer(vit)网络详解_哔哩哔哩_bilibili Vision Transformer学习笔记_linear projection of flattened patches-CSDN博客 一、embedding 层 对于标准的Transformer模块,要求输入的是token (向量…

win10使用copilot(尝试中)

一、 Microsoft account | Sign In or Create Your Account Today – Microsoft 一路next全部点好【1】 二、 查看当前win10的版本,cmd输入命令winver 三、 修改区域为美国 四、更新和安全 Reference 【1】完美|在 Win10 强行开启 Win11 的独有功能…

蓝桥杯每日一题2023.12.4

题目描述 竞赛中心 - 蓝桥云课 (lanqiao.cn) 题目分析 本题使用树型DP,蓝桥杯官网出现了一个点的错误,但实际答案是正确的 状态表示:f[u]:在以u为根的子树中包含u的所有联通块的权值的最大值 假设s1,s2,…sk 是u的…

腾讯云双十二优惠活动有哪些?详细攻略来了!

腾讯云作为全球领先的云计算服务提供商,一直在为各行各业的用户提供优质、高效、稳定的云计算服务。双十二即将来临,腾讯云也为大家准备了一系列丰富多彩的优惠活动。那么,这些优惠活动究竟有哪些?详细攻略在此,一起来…

jsp高校教师调课管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 高校教师调课管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…

洗浴按摩店服务预约管理系统会员小程序效果如何

洗浴按摩是线下服务需求度较高的行业,如今互联网趋势下,传统线下实体店面临多重经营痛点,需要商家转而线上管理及赋能客户消费、完善订单流程,多平台宣传让目标客户触达。 接下来让我们看看通过【雨科】平台搭建洗浴按摩店管理系…

22款奔驰GLE450升级香氛负离子 车载香薰功能

相信大家都知道,奔驰自从研发出香氛负离子系统后,一直都受广大奔驰车主的追捧,香氛负离子不仅可以散发出清香淡雅的香气外,还可以对车内的空气进行过滤,使车内的有害气味通过负离子进行过滤,达到车内保持清…

【C#】读取ini配置文件的内容

一、编写ini配置文件 ini文件时初始化文件,通常是系统配置文件所采用的存储格式。ini文件有自己的固定格式,是由若干个“节”(section)组成,每个节由若干个“键”(key)组成,每个key…

【cmake】获取到某个目录下的所有子目录名

整体工程目录结构如下。现打算获取到vac目录下的所有子目录名。 cmake 实现如下: # 设定要遍历的目录,保存到 VAC_INCLUDE_DIR 变量 set(VAC_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/vac)# 获取到当前目录下的所有文件和目录(以相对路径的方式)&a…