【MySql】05 笔记 索引

一、索引例子分析

1、select * from T where k between 3 and 5 执行几次搜索树?会扫描多少行?

> create table T(
ID int primary key,
k int NOT NULL DEFAULT 0,
s varchar(16) NOT NULL DEFAULT '',
index k(k)) engiine

> insert into T values(100, 1, 'aa'),(101, 2, 'ab'),(102, 3, 'ac'),(103, 4, 'ad'),(104, 5 'ad'),(105, 7, 'ad')

2、执行流程

  1. 在 k 索引树上找到 k=3 的记录,取得 ID = 102;
  1. 再到 ID 索引树查到 ID=102 对应的 数据;
  1. 在 k 索引树取下一个值 k=5,取得 ID=104;
  1. 再回到 ID 索引树查到 ID=104 对应的 数据;
  1. 在 k 索引树取下一个值 k=6,不满足条件,循环结束。

回表:回到主键索引树搜索的过程

二、覆盖索引

1、Select ID from T where k between 3 and 5

  1. 需要查 ID 的值, 而 ID 的值已经在 k 索引树上了,因此可以直接提供查询结果,不需要回表。
  1. 由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的
    性能优化手段。

三、联合索引

1、有一个高频请求,要根据市民的身份证号查询他的姓名则么做?

建立一个(身份证号、姓名)的联合索引

2、索引字段的维护是有代价的,在建立冗余索引来支持覆盖索引时就需要权衡考虑。

四、、联合索引 最左前缀原则

1、B+ 树索引结构,可以利用索引的“最左前缀”,来定位记录。

2、在建立联合索引的时候,如何安排 索引内的字段顺序。

  1. 第一原则是,如果通过调整顺序,可以少维护一个索引,那么这个顺序是需要优先考虑采用的。索引的复用能力
  1. 第二原则 考虑索引的空间使用

3、例子 一建立了一个联合索引 (a,b)

查询既有联合查询,又有基于a、b各自的查询,无法使用(a,b)这个联合索引。这时就需要维护单个索引。

五、、联合索引 索引下推

1、MySQL 5.6 引入的索引下推优化(index condition pushdown), 可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。

2、例子 检索出表中“名 字第一个字是张,而且年龄是 10 岁的所有男孩” 联合索引是(name,age)

  1. 语句
> select * from tuser where name like '张%' and age 10 and sex = 1
IDnamesexage
1张1130
2张2110
3张3020
4张4010
  1. InnoDB 在 (name,age)索引内部就判断了age是否等于10,对于不等于10的记录,直接判断并跳过。减少了回表的次数。上表只需两次回表 内部判断会丢弃年龄为 30 和 20 的
weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值