索引: 索引是帮助SQL高效获取数据排好序的数据结构
Mysql 底层索引实现: B+ Tree 或者 hash
B+ 树 数据结构示例图:
如下图3层数据的 B+ 树,数据从左到右是依次存储,第一二层为非叶子节点表示索引,存储的索引越多则当前 B+ 树的层级越少;层级越少则表示更少的 I/O操作,减少I/O开销;第三层是存储数据的叶子节点,假如查找数据 30,实际只有两步,第一步时会把所有索引加到内存中,二分查到到30在索引 20-49之间,则索引之间空白实际是它叶子节点的指针,通过指针直接就定位到 20到30,那么就找到数据30;
主键索引
存储引擎索引(注意:存储引擎是修饰表的)
MylSAM存储引擎索引实现,MylSAM索引文件和数据文件是分离的(非聚集),如下:.frm是存放表的结构,.MYI是存放表的索引文件, .MYD是存放表的数据文件;根据索引查找时,先到.MYI文件找到对应的索引,再根据索引到 .MYD中找到对应的数据;
InnoDB存储引擎索引实现,InnoDB索引文件和数据文件是同一个文件中的(聚