专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
今天看啥  ›  专栏  ›  数据分析与开发

Mysql 的索引为什么使用 B+ 树而不使用跳表?

数据分析与开发  · 公众号  · 数据库  · 2022-05-23 12:10
在我们的印象中,mysql数据表里无非就是存储一行行的数据。跟个excel似的。直接遍历这一行行数据,性能就是O(n),比较慢。为了加速查询,使用了B+树来做索引,将查询性能优化到了O(lg(n))。但问题就来了,查询数据性能在 lg(n) 级别的数据结构有很多,比如redis的zset里用到的跳表,也是lg(n),并且实现还贼简单。那为什么mysql的索引,不使用跳表呢?我们今天就来聊聊这个话题。B+树的结构之前的一篇文章里,已经提到过B+树的结构了。文章不长,如果没看过,建议先看下。当然,不看也行。在这里,为了混点字数,我简单总结下B+树的结构。B+树查询过程如上图,一般B+树是由多个页组成的多层级结构,每个页16Kb,对于主键索引来说,最末级的叶子结点放行数据,非叶子结点放的则是索引信息(主键id和页号),用于加速查询。比方说我们



文章原文内容无法展示,请购买VIP后获取原文链接; 或者 使用第三方RSS订阅工具获取原文链接