索引是帮助MySql高效获取数据的排好序的数据结构(树,表)。
看一本厚书,找东西,是不是得翻目录??不翻目录累死才能找到!!!
Data Structure Visualization
二叉树(二叉搜索树)
Select * from 表 where col2=89
如果Col2建立索引
key-value字段,key存放Col2,value存放记录所在的磁盘地址
红黑树 (jdk1.8HashMap底层数据结构优化)
高度变成3-5 引出B+树
B树()
B+树(多叉平衡树)
- 把所有的索引元素,在叶子节点存储了完整的一份,
- 提取一部分作为非叶子节点,只存储索引元素,没有存储索引元素所对应的磁盘地址
- 作为冗余来出现,来构造出这颗树
树高度为3:Mysql对树的每一个节点的大小都有明确的规定16KB
主键按照bigint容量8Byte 指针6Byte 16KB/(14Byte)=1170个
假设索引+当前所在记录属性值占1KB 一个叶子结点可存储16个! 1170*1170*16=二千多万
首先根节点加载进内存!!!
MyISAM存储引擎 索引文件和数据文件是分离的(非聚集)!!
InnoDB存储引擎