mysql索引学习总结

mysql索引

最近用到mysql索引,赶紧了解了一下,最后做一个小小的总结。

关于索引

索引,就是按照索引排好序的数据结构,查询数据的时候走索引比不走索引要快很多,因为不走索引意味着全表扫描,而且还可能会锁住元组,效率比较低。

索引实现

mysql使用B+ Tree的索引模型,无论是MyISAM还是InnoDB。为什么使用B+树而不是红黑树、B树?不使用二叉树的原因主要是因为如果存储大量数据,二叉树很容易深度过深。而基于hash则无法支持范围查找。B+树的数据全部存储在叶子节点,按照索引排好序并且通过双向指针串在一起,这样就很容易的进行区间遍历。

联合索引

联合索引:mysql将多个列按照顺序作为一个索引,B+树按照索引的先后优先级别排序;建立的联合索引a,b,c之后索引的使用遵循最左配备原则。

聚簇索引与非聚簇索引

聚集索的叶子节点会存储数据(其他列的数据),非聚集索引则存储对应的磁盘指针。

辅助索引

叶子节点存储的是主键的值,拿到主键的值之后还需要查询一次才最终拿到数据,这个过程称为回表。
辅助索引通过create index indecName on tableName(columnName) 添加。

MyIsam 与 InnoDB

MyIsam使用非聚簇索引,B+树叶子节点的值存储的是磁盘指针,需要进行一次磁盘IO操作才能最终拿到数据,而InnoDB使用聚簇索引,到达叶子节点意味着直接拿到了数据。Mysam锁的粒度是表级,InnoDB支持行级锁。Mylsam不支持事务。

索引的缺点

更新操作有一定的损耗,需要维护索引树,而且占用磁盘空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值