Mysql 索引相关知识

一:局部性原理
空间局部性:程序和数据的访问都有成群访问的倾向,在有一个时间段内,仅适用其中的一部分。
时间局部性:最近访问的程序和数据,一段时间内又会被访问。

二: 索引是什么
1. 帮助mysql高效的获取数据
2. 索引存储在文件系统中
3. 索引的存储格式和存储引擎有关
4. 索引文件的数据结构:
    hash
    二叉树
    B树
    B+树

二叉树:
左边节点都小于根节点,右边节点都大于跟节点;缺陷:可能导致左右节点树高不平衡,查找效率变低。
红黑树(平衡二叉树):
1. 节点是红色或者黑色
2. 根节点是黑色
3. 每个叶子节点是黑色空节点
4. 每个红色的两个子节点是黑色。
5. 任意节点到子节点的黑色数目相同。

红黑树调整:变色和旋转

B树:M叉多路平衡树,B数父节点存储数据,B+树父节点不存储数据,值存储key(这样一个节点可以存户更多的key)。


InnoDB:
主键索引:叶子节点存的是实际值。
非主键索引:叶子节点存储的是主键ID,查找对应的主键ID,在跟进主键索引查找对应的记录行(两次B+树查询)。

两次B+树查询:
select * from table1 where name='zhangsan';

一次B+树查询:
select id form table1 where name='zhangsan'; 

MyIsam:
索引:叶子节点存储的是地址(因为索引文件和数据文件是分开存储的)。


三:索引的分类:
主键索引:值唯一,不能为空。
唯一索引:唯一值,值可以为空
普通索引:基本索引,没有唯一限制。
全文索引:全文索引类型是fulltext,可以再varchar、char、text上建索引。
组合索引:多列值组成一个索引、专门用于组合搜索(最左匹配原则)。


索引下推、谓词下推 ?(mysql 5.7)

覆盖索引:select字段、join字段、where 字段被索引字段全部覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值