B+树的特性决定了非聚集索引插入的离散性,这句话怎么理解?
这是我在《MySQL技术内幕》中看到的一句话,不是很理解,希望前辈们可以解释下。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
这是我在《MySQL技术内幕》中看到的一句话,不是很理解,希望前辈们可以解释下。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
B+树的叶节点是有序的。当它用于聚集索引的时候,叶节点本身既是索引又是真实值。当它用于非聚集索引的时候,叶节点仅仅是索引,索引的指针指向的才是真实值。由于此时索引是有序的,因此其指向通常是无序的,所以两个连续的索引值可能对应的真实值所在的行可能会离得很远。
举个例子,一个表用整数
id
作为主键,且将主键当做聚集索引。此时再用表中的另一列age
当做非聚集索引。由于表的行本身就是按主键排序的,因此age
是无序的,所以age=10
的行可能在第八行,而age=11
的行却可能位于第三十行,差别很大。所以在插入的时候就无法做到连续的索引插入到连续的行中,而只能一条一条地定位和插入