B+树的特性决定了非聚集索引插入的离散性,这句话怎么理解?

codinghuang
  • 142

这是我在《MySQL技术内幕》中看到的一句话,不是很理解,希望前辈们可以解释下。

回复
阅读 3.6k
1 个回答

B+树的叶节点是有序的。当它用于聚集索引的时候,叶节点本身既是索引又是真实值。当它用于非聚集索引的时候,叶节点仅仅是索引,索引的指针指向的才是真实值。由于此时索引是有序的,因此其指向通常是无序的,所以两个连续的索引值可能对应的真实值所在的行可能会离得很远。

举个例子,一个表用整数id作为主键,且将主键当做聚集索引。此时再用表中的另一列age当做非聚集索引。由于表的行本身就是按主键排序的,因此age是无序的,所以age=10的行可能在第八行,而age=11的行却可能位于第三十行,差别很大。所以在插入的时候就无法做到连续的索引插入到连续的行中,而只能一条一条地定位和插入

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏