mysql 学习心得3 (参考:小十是小仙女吖bilibili视频)

 Mysql索引使用的是B+树,因为索引是用来加快查询的,而B+树通过对数据进行排序所以是可以提高查询速度的,然后通过一个节点中可以存储多个元素,从而可以使得B+树的高度不会太高,在Mysql中一个Innodb页就是一个B+树节点,一个Innodb页默认16kb,所以一般情况下一颗两层的B+树可以存2000万行左右的数据,然后通过利用B+树叶子节点存储了所有数据并且进行了排序,并且叶子节点之间有指针,可以很好的支持全表扫描,范围查找等SQL语句。

二叉树  当插入的数据id递增时 ,变成了链表,查询的时间与全表扫描一样,不推荐

红黑树  当插入的数据id递增时,会进行树的旋转。是个二叉平衡树。但数据数量一多的时候树的高度还是太多了

既然要高度小一点,那就将它变为多叉树!!B-Tree

 3高度的树能放2千万行数据。

一般来说,非叶子节点(也就是索引)一开始就在内存中,所以其实查询的时候只需要一次 I/O,就可以查出数据了。

ps :存储引擎是表级别的,不同的表可以选择 不同的存储引擎

 myisam    B+树的叶子节点放的是这行数据的磁盘文件地址

frm:表结构

MYD:data行记录数据

MYI:index 索引

由于它的存储结构,他的索引和data数据是分开存储的,所以他是非聚集索引

 innoDB   B+树的叶子节点放的是这行数据的数据

frm:表结构

ibd: 索引+数据

由于它的存储结构,他的索引和data数据是一起存储的,所以他是聚集索引

 从存储结构上来说,聚集索引的查询效率更高!

联合索引,按照索引的先后列的顺序进行排序(a,b,c)先按a列进行排序,如果a能区分就不看bc列,如果a列相同,就按b列排序。每一列中,字符串每一位进行比较。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值