mysql索引
2021-05-19 本文已影响0人
何何与呵呵呵
B-树结构
image.png
1.叶子节点具有相同的高度,叶子节点的指针为空
2.节点中的数据索引从左到右递增排列
3.所有节点都存储data
B+树结构
image.png
1.非叶子节点不存储数据
2.叶子节点包含所有索引字段
3.叶子节点之间通过索引连接,提高查询性能。
Hash表
image.png
1.对索引求hash值就能查到对应的buket
2.很多时候查询效率比tree快,但仅能满足=,in的查找
3.hash冲突问题
MyISAM存储引擎
image.png
非聚集索引,索引和文件分离
InnoDB存储引擎
image.png
1.数据本身按B+树组织的索引结构文件
2.聚集索引叶子节点包含所有数据
3.为什么推荐使用整形的自增Id?你不创建mysql自动帮你创建,增加数据库的压力,整形可以节省空间而且自增ID保证主数据递增而且无重复。其次提高范围查找效率,增加排序效率,提高扫表能力,顺序访问。如果主键是非自增 id,为了确保索引有序,mysql 就需要将每次插入的数据都放到合适的位置上。
4.为什么非主键索引叶子节点保存的是主键id?不应考虑数据的一致性,而且可以节省索引的空间。