预备知识
MySQL索引数据结构详解
参考:https://blog.csdn.net/nihaoa50/article/details/90212833
MySQL聚集索引与非聚集索引
1、InnoDB引擎
聚集索引中,B+树的叶子节点存放的实际数据的地址
非聚集索引中,B+树的叶子结点存放的是对应主键的值,根据对应主键的值查找实际数据的地址(这里也就是回表的概念)
参考:https://www.cnblogs.com/yanggb/p/11252966.html
2、MyISAM引擎
聚集索引与非聚集索引一样,都存放的是地址值
参考:http://www.360doc.com/content/19/1021/05/15750360_868083149.shtml
MySQL索引方法
1、使用B+树存储索引
-
非叶子节点不存储data,只存储索引(冗余),可以放更多的索引
-
叶子节点包含所有索引字段
-
叶子节点用指针连接,提高区间访问的性能
2、使用Hash存储索引
-
对索引的key进行一次hash计算就可以定位出数据存储的位置
-
很多时候Hash索引要比B+ 树索引更高效
-
仅能满足 “=”,“IN”,不支持范围查询
-
hash冲突问题