MySQL的B-Tree索引

大多数MySQL引擎都支持这种索引,但底层的存储引擎可能使用不同的存储结构,例如NDB使用T-Tree,而InnoDB使用B+ tree。

B-Tree说明所有的值都是按顺序存储的,并且每个叶子页到到根的距离相同。B-Tree索引能加快访问数据的速度。因为存储引擎不需要进行全盘扫描来获取数据,是从索引的根节点开始搜索。根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找。

通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值的上限和下限。最终存储引擎要么找到对应的值,要么改记录不存在。

B-tree的限制:

  • 如果不是按照索引的最左列开始查找,无法使用索引。
  • 不能跳过索引中的列,例如索引为(id,那么,sex)不能只是使用id和sex二跳过name。
  • 如果查询中有某个列的范围查询,则其右边的所有列都无法使用索引。
posted @ 2021-07-01 23:50  Eleanor123  阅读(74)  评论(0编辑  收藏  举报