Mysql索引理解

目录

Mysql索引

索引是什么

索引分类

索引数据结构

二叉树

红黑树

Hash表

B-Tree

B+Tree

表存储引擎

类型

MyISam

InnoDB

主键索引

非主键索引

复合索引(联合索引)


Mysql索引
索引是什么

排好序的数据结构 - 索引列:K-索引字段值 V-存储地址,减少IO

索引分类

按物理存储分类:聚集索引(主键构造一颗 B+tree,主键+行数据)、非聚集索引(也叫二级索引、辅助索引,数据主键(指针))

按数据结构分类:B+tree索引、Hash索引、Full-text索引

按字段特性(应用层次)分类:唯一索引(UNIQUE)、主键索引(PRIMARY KEY)、普通索引(INDEX)、全文索引(FULLTEXT)

按字段个数分类:单列索引、联合索引(也叫复合索引、组合索引)

索引数据结构
二叉树

对递增列不能有效减少查找次数

红黑树

平衡二叉树,自平衡,随数据量增加树高度会增加

Hash表

优点:对索引的key进行一次hash计算就可以定位出数据存储的位置

不足:仅能满足 “=”,“IN”,不支持范围查询以及hash冲突问题

B-Tree

节点既包含索引键值,又包含指向子节点的指针,叶子节点指针为空

所有索引元素不重复,节点中的数据索引从左到右递增排列

B+Tree

B-Tree变种,非叶子节点不存储数据,只存储索引(冗余,常驻内存),叶子节点包含所有索引及索引指向的值,叶子节点从左到右顺序排列且节点间有指针连接(提高区间访问的性能,不用回到根节点查询)

页大小约16KB

表存储引擎
类型

MyISam

索引文件和数据文件是分离的(非聚集索引)

InnoDB
主键索引

叶节点包含了完整的数据记录(聚集索引)

表数据文件本身就是按B+Tree组织的一个索引结构文件 - 索引K使用主键,无主键则默认创建隐藏列

非主键索引

叶子节点存储主键值:一致性(保持与主键索引一致)、节省存储空间(免除与主键索引重复存储的列数据)

复合索引(联合索引)

根据索引字段顺序依次比较ASCII码排序 - 叶子节存储主键索引,回表查找数据

最左前缀原理:查询条件字段顺序与索引字段顺序保持一致使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值