mysql索引

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?不应考虑数据的一致性,而且可以节省索引的空间。

联合索引

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容