Mysql索引底层数据结构
1、为什么要使用索引
mysql的数据都是存在磁盘上的,每次读取数据要经历磁盘I/O。一张数据表创建之后,里面的数据是不同的时间插入的,因此每张表的每一行数据在磁盘上并不一定连续。因此表中的每一行数据的内存地址都是随机的,因此我们要读取上图的col2=23的那一行至少要经历7次磁盘I/O。
也就是说在没有索引的情况下查询数据库大数据量的表,需要遍历整张表,并进行多次I/O。I/O是非常消耗时间的,因此要想快查询数据索引必不可少。
2、什么是索引
mysql官方给的索引定义:索引是帮助MySQL高效获取数据的排好序的数据结构
如图所示:要查询col2=23的数据,就把col2这个字段做为索引。
假如如图右边的二叉查找树做为索引的数据结构,每个节点存放一个key一个value,key:索引col2的值例如23,value:图左边的磁盘文件地址例如0xD1。
二叉树特点:二叉树是指至多只有两个子节点的树形数据结构,没有父节点的节点称为根节点,二叉树任