1:B树
见图知义:B树本质为平衡二杈树,但在索引中节点的检索会进行I/O操作,为了减少节点读取节点的次数(树的高度),
将平衡二叉树优化为平衡多杈树。举例如下,查找28,根节点常驻内存无需I/O,定位到P2指针,
P2指针磁盘读取磁盘块3,I/O次数为1,再次定位读取磁盘块8并匹配到28,查询结束,至此共只需2次I/O开销。
I/O开销为h-1,即O(h)=O(logdN),出度d一般大于100,故而对于大数据来说树的深度也不会过深。
此外,在读取某个节点时,根据局部性原理,会发生页预读,再次优化I/O次数(一般页为 4K,一般将节点设置为一页,计算机存储按页对齐,?hook)
2:B+,
1°:B+所有关键词均在叶子节点,并且为叶子结点建立链指针(顺序访问指针)。B+适合做文件检索,Mysql的两大引擎均用B+索引。
2°:innodb主要为聚合索引,索引文件包含所有数据项
3°:主索引与辅索引
3:建立索引时:建立前缀索引注意字段选择性;能扩展索引尽量不新建(索引维护与增删开销);避免隐式转换