索引的本质解析

索引的本质:帮助MySQL高效获取数据的排好序的数据结构。
**不建索引需要多次磁盘IO。
将根节点索引一次加载到内存中做比较,即:15,56,77同时加载到内存中,完成一次磁盘IO。MySQL规定一次加载大小为16k。
在这里插入图片描述
MySQL索引底层数据结构为B+树:
在这里插入图片描述

存储引擎是作用于数据表的:
myisam:三个文件:(1)frm(2)MYD: data,存储数据(3)MYI:index,存储索引
在这里插入图片描述
innodb:(1)frm:描述表的框架结构 (2)ibd:存储数据与索引。
注意与myisam叶子节点的区别
在这里插入图片描述
myisam查到节点后,需要根据节点的地址值再去数据文件获取记录的值;而innodb查到节点后,由于该节点存储着记录的值,所以可以直接获取。

为什么必须有主键,整型自增?
将索引块加载到内存中比较时,使用整型比较快。如果使用UUID,其为字符串比较起来浪费时间。如果没有设置主键,数据库会选一个无重复的列作为主键,如果没有,数据库会自己创建

B+树为什么要加指针?
实现范围查找:加入要查找大于20的元素,先定位20,然后利用指针可以获取所以有大于20的元素
在这里插入图片描述

联合索引的底层数据结构:

发布了15 篇原创文章 · 获赞 1 · 访问量 848

猜你喜欢

转载自blog.csdn.net/Tommy_____/article/details/105245490