MySQL索引学习笔记
索引的定义
索引是排好序的数据结构。
好处:能够提高查询的效率
坏处:会减慢插入的速度,占用额外的存储空间
主要存储引擎的种类
1 InnoDB
索引和数据存储在一起
2 MyISAM
索引和数据分离
索引的数据结构
二叉树
无法保证左右子树的高度的平衡,树的高度可能会变成O(n),和链表查询的时间复杂度一致,数据完全存储在内存里
红黑树
能够保证树的平衡,查询的时间复杂度为log(n),适合于点查询,数据也完全存储在内存里
Hash表
对索引的key进行一次hash计算就可以定位出数据存储的位置
很多时候Hash索引要比B+ 树索引更高效
仅能满足 “=”,“IN”,不支持范围查询
B-Tree
叶子节点具有相同的深度,叶子节点的指针为空
所有索引元素不重复
节点中的数据索引从左到右递增排列
B+Tree(B-Tree变种)
非叶子节点不存储data,只存储索引(冗余),可以放更多的索引
叶子节点包含所有索引字段
叶子节点用指针连接,提高区间访问的性能