覆盖索引和索引条件下推

1.什么是覆盖索引

一个索引包含了满足查询结果的数据,不需要回表

2.索引条件下推index_condition_pushdown

2.1例子1

select * from s1 where key1 > 'z' and key like '%s'

此表有两个索引,一个关于主键的聚簇索引,一个关于key1的二级索引
执行此语句时
情况1:在关于Key1的索引中查询记录(假设有100条满足条件key1>'z’的记录),然后将这100条记录全部在聚簇索引中回表(有100次回表操作),最后过滤满足条件(key like ‘%s’)的记录
情况2:在关于Key1的索引中查询记录(假设有100条满足条件key1>'z’的记录),直接过滤满足条件(key like ‘%s’)的记录(假设结果集仅有十条记录),最后回表(只有10此回表操作)
情况2,则为索引条件下推ICP

2.2举例2

在这里插入图片描述

此表含有关于三个字段的联合索引:在这里插入图片描述
执行语句
在这里插入图片描述

此时,只是用了联合索引的一部分
可能使用索引的情况:
1)使用联合索引查找满足条件(zipcode==‘000001’)的记录(假设有1000条),将这1000条记录在聚簇索引中回表(1000次回表操作),查询全部的记录数据,然后根据后续条件(lastname like ‘%张%’ and address like ‘%北京市%’)完成过滤,得到最终的结果集
2)使用联合索引查找满足条件(zipcode==‘000001’),并且联合索引中存在lastname的信息可进行条件匹配(lastname like ‘%张%’)得到满足这两个条件的记录(假设有100条),最后回表完成其他的条件过滤(仅有100次回表操作)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值