05深入浅出索引下笔记

深入浅出索引(下篇)

创建时间:2021年11月11日12:09:16


——————————————————————————————

索引查询流程

问:一个查询语句的索引执行流程如何?

答:假设字段k是普通索引,下面是一个范围查找,假设符合条件的共3条

select * from T where k between 3 and 5

1、查询k索引树得到r1主键

2、回表得到r1行的数据,返回给server层

3、直接获取下一个k索引树叶节点的下一节点,满足条件

4、重复第二步骤

5、重复上述步骤,直到第三步骤的获取节点不满足条件

最后:server层判定k索引树的扫描行数为3行(根据server层接收的结果),实际扫描行数是4行(第四行是k=6,不满足条件)

问:什么是回表?

答:通过普通叶节点的值去进行聚簇索引树值查询的过程。

索引覆盖

问:什么是索引覆盖?作用是什么?

答:又称覆盖索引,不是一种索引类型。当所需要的业务查询内容在普通索引上时,称其为索引覆盖。

能减少回表,提高效率。一般采用联合索引的形式实现索引覆盖。

最左前缀原则

问:什么是联合索引?

答:多个字段组合而成的索引。索引树中按照联合索引的字段排序进行组建,并遵循最左前缀原则。

问:什么是最左前缀原则?

答:如果字段是非字符,则查询时仅第一个字段的相关内容检索也可以利用上索引树,字符类型则前n个字符都可以利用上索引树。

问:怎么设计联合索引?

答:

性能上:选用检索频率较高的字段做为第一字段

空间上:当存在多个索引时,将占用空间较短的作为单独索引。

PG:

a:bigint(8),b:int(4)

联合索引(ab)。索引(b)

问:联合索引的实战场景?

答:

1、覆盖索引;

2、排序;

PG:联合索引(ab)

select * from T where a = '' order by b

索引下推

问:联合索引中第一个字段被模糊匹配,第二字段能否利用得上?

答:5.6及以后,可以。

在此之前,只要第一个字段被模糊匹配,第二个字段不会索引生效。

5.6及之后,会提前进行索引下推(过滤不符合第二个字段的数据),以减少回表次数,提高性能。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈镇坤27

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

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

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

打赏作者

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

抵扣说明:

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

余额充值