1.什么是MyISAM-.InnoDB
1.MyISAM 非聚集索引:索引和行记录是分开存储的。
MyISAM 可以没有主键
主键和普通索引是两棵独立的索引B+树、指针定位
2.InnoDB 普通索引:索引与行记录是存储在一起的。趋势递增。
没有单独区域存储行记录。
主键索引的叶子节点,存储主键,与对应行记录。(而不是指针)
2.为什么要设计索引?
提升查找速度。
3.哈希比树快,为什么设计成树?
哈希 复杂度O(1)
O(lg(n))
因为有分组、排序、比较
InnoDB 不支持哈希索引。
4. 数据库索引使用B+树
4.1二叉树
4.2 B树
高度低 减少磁盘IO (局部性原理 高频的放一块)
1.非叶子节点不存树 数据只存在同一层的叶子节点上。
2.叶子之间增加了链表
4.3 B+树
1.范围查找 Max min之后,中间叶子节点就是结果集
2.叶子节点 记录行磁盘存储;非叶子节点PK,内存存储
3.非叶子节点 B+存储更多索引
存储大量的数据(5亿),高度3.索引(4G)
总结:
索引是为了查询用的是树索引 B+ 5亿数据 3层 内存4G单点、有序、范围