MySQL索引底层数据结构(谨作个人记录)

108 阅读1分钟

MySQL索引底层数据结构

MySQL索引底层使用的数据结构分为B+Tree和Hash
数据结构对比:二叉树、红黑树、Hash、BTree、B+Tree
  • 二叉树:索引在二叉树上查找时,索引值可能导致二叉树的一个分支排序恶化为长链表的结构,这样的效率比较低。
  • 红黑树:本质上时二叉平衡树,问题点在数据量很多时,红黑树的高度会变的很高,这样索引从根节点往下查找时效率较低。
  • Hash:优点:通过计算索引的Hash值来确定索引的位置,查找速度较快。缺点:不支持范围查询。
  • BTree:优点:解决了红黑树的高度问题。缺点:范围查询比较麻烦。
  • B+Tree:优化点是通过在叶子节点之间添加双箭头指针的方式来增加范围查询的支持度,叶子节点存储的数据也不一样,这里分两种引擎。 -- MyISAM:存储的是所查记录的磁盘地址。 -- InnoDB:直接存储记录数据(索引和其他列的数据)。