like左匹配索引失效_Mysql 会出现索引覆盖的查询

索引覆盖

是指如果查询的列恰好是索引的一部分,那么查询只需要在索引区上进行,不需要到数据区再找数据,这种查询速度非常快,称为“索引覆盖”。 type=indexExtra using index

注:如果在innodb引擎下面,非主键索引取ID字段(主键)则会使用到索引覆盖。聚簇索引

Ø innodb

根据id查询条件来得到id字段信息

3c0a3e2af57dade7eda29541409e78ac.png

因为是innodb,在普通索引上存储了主键索引ID号,所以在用普通索引作为条件查询主键时会使用到索引覆盖。

0f80ac05e2cf742bf890ce628fae705a.png

自己查询自己的字段

d2d24c2ed90c4fc901f5191ae74404e4.png

Ø myisam

使用主键索引来查询会用到索引覆盖

aaf73439bafc36c6cebbe5253ff971f5.png

普通索引查询ID字段将不会用到索引覆盖

65484a1ac6140e4438dab417b32c4e76.png

自己查询自己的字段

45744278847af47eee1674ab24b3b6e7.png

like 查询

一般情况下,在使用like查询时,左边字符中没有%的情况下,才可以使用索引[向左原则]。 左边有%,则会导致索引失效。当然字段本身,查询字段本身,则会触发索引覆盖,可以用到索引。

向左原则验证:

e2af103a0df2d94db9f028338b9bb666.png

索引覆盖:

6bba6464b158e7f1ff6702ad812d8e34.png

innodb和myisam索引覆盖不同点

7df936046f3c2e1c4508d7fceb804e35.png

OR运算

如果出现OR条件运算,要求所有参与运算的字段都存在索引,才会使用到索引

or两边,最好都有独立索引。

168d5d4574655d0a122fce2fc273ed6c.png

ee61731b67716c872e34da808a2b9811.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值