MYSQL索引-覆盖索引

MYSQL索引-覆盖索引

一、覆盖索引

​ 覆盖索引又可以称为索引覆盖,即select的数据列只从索引中就能得到,不必读取数据行,也就是只 需扫描索引就可以得到查询结果。

​ 说明:

  1. 使用覆盖索引,只需要从索引中就能检索到需要的数据,而不要再扫描数据表(索引为select 列)

  2. 索引的体量往往要比数据表小很多,因此只读取索引速度会非常快,也会极大减少数据访问量;

  3. MySQL的查询优化器会在执行查询前判断,是否有一个索引可以覆盖所有的查询列;

  4. 并非所有类型的索引都可以作为覆盖索引,覆盖索引必须要存储索引列的值。像哈希索引、空间索引、全 文索引等并不会真正存储索引列的值

    判断是否使用了覆盖索引:

    当一个查询使用了覆盖索引,在查询分析器EXPLAIN的Extra列可以看到“Using index” 。

二、实例

show INDEX from employee;(有四个索引id,name,salary,dept ,后3个为复合索引)
在这里插入图片描述

explain select * from employee where id=13;

在这里插入图片描述

触发覆盖索引:

explain select id from employee where id=13;

在这里插入图片描述

explain select name,salary from employee;

在这里插入图片描述

可以看到覆盖索引,即select 后面的列的值,都在索引中。

索引可以提升执行的效率和节省时间,但是我们同样可以看到,在使用覆盖索引的时候,不适用于需要查询多个列数据的场景;在查询列较少的情况下,使用覆盖索引可以明显提升

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值