什么是索引,如何优化索引(explain性能分析)

本文详细介绍了数据库索引的概念,包括其作用、类型(单值、唯一、复合索引)以及适用场景。讨论了索引的优化,强调了适合和不适合创建索引的字段,并提供了`EXPLAIN`性能分析的解析,帮助理解SQL查询的执行计划。通过对`EXPLAIN`输出的各个字段解释,读者能更好地掌握如何分析和优化查询性能。
摘要由CSDN通过智能技术生成

什么是索引,如何优化索引(explain性能分析)


索引:

帮助Mysql高效获取数据的数据结构

在数据库中,维护着这样的一种数据结构(索引),这种数据结构(索引)以某种方式指向数据。所以索引一般也很大,存在磁盘中。

我们平时说的索引,如果没有特别指明,一般指B树。其中有聚集索引、次要索引、覆盖索引、复合索引、前缀索引、唯一索引、默认都是B+树索引。

索引分类:

单值索引:

一个索引只包含单个列,一个表可以有多个单列索引。

唯一索引:

索引列的值必须唯一但允许是空值。

复合索引:

一个索引包含多个列。


索引使用场景:

适合建索引的场景:

  1. 主键自动建立唯一索引。
  2. 频繁作为查询条件的字段。
  3. 查询中与其他表所关联的字段,外键等。
  4. 查询中排序的字段,排序字段如果通过索引去访问,将大大提高效率
  5. 查询中统计或分组的字段。

不适合建索引的场景:

  1. 频繁更新的字段或表。
  2. Where条件里用不到的字段。
  3. 表记录太少
  4. 某个列所包含的数据有太多重复的内容,如状态:(1.通过,2.不通过),没必要建立索引。


explain性能分析:

在这里插入图片描述
explain+SQL。 执行
在这里插入图片描述
会出现一张表。主要体现了该条Sql的执行情况

各个字段解释:

id:Sql查询的序列号,表示查询中执行select子句或操作表的顺序

	有三种情况:
	1. id相同:执行顺序从上而下。

在这里插入图片描述
2. id不同,如果是子查询,id会递增,id越大的表优先级越高,越先被执行。
在这里插入图片描述
3. id有相同的也有不同的。相同的可以认为是一组,顺序由上往下执行。除此之外,id越大越先执行。
在这里插入图片描述
其中derived代表虚拟表的意思,derived2代表当前记录是id为2的记录的虚拟衍生表。

select_type:查询类型,主要用于区别普通查询、联合查询、子查询等复杂查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

table:表名

type:访问类型,显示查询使用了何种类型。

从好到差依次是:
		system>const>eq_ref>ref>range>index>All

在这里插入图片描述

  • system:表中只有一行记录
  • const:根据索引查出一条数据,并且该sql在where条件后使用了主键唯一索引,并赋予常量。如SELECT * from student where id = 1
  • eq_ref:唯一索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描。
  • ref:非唯一索引扫描,返回匹配的所有行。
  • range:使用了索引,但条件使用了between,<,>,in等范围查询。没有遍历全索引
  • index:遍历了全索引,如:Select 主键 from 表名
  • all:全表扫描

possible_keys:显示可能应用在这张表的索引名,一个或多个。查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用。

key:实际使用的索引名,如果没用就是null。若查询中使用了覆盖索引,则该索引仅出现在key列表中

什么是覆盖索引?
select的字段的名称,数量和先后顺序,和建立的复合索引的名称,数量先后顺序相同。
就可以直接在索引上取到数据,不用再回表中查询其他字段了

key_len:索引长度(字节数)

ref:显示索引的哪一列被使用了,如果可能的话,是一个常数。哪些列或常量被用于查找索引上的值。

在这里插入图片描述

rows:每张表有多少行被优化查询

Extra:包含不合适在其他列中显示但十分重要的额外信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

好了 基本已经讲完,欢迎大家评论区指出不足,一起学习进步!

大家看完了点个赞,码字不容易啊。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易柏州Innovation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值