Mysql索引原理

来源:这里教程网 时间:2026-03-01 11:57:07 作者:

      MySQL默认使用B+树结构管理索引,B+树中的B代表平衡(balance )。除了B+树还是二叉树,平衡二叉树,B-树。索引可以加快对数据查询,但是会降低修改、删除、更新操作。

一、二叉树

     二叉树是记录表中每行数据顺序,根据插入的数据不同会更新到索引中,索引不平衡。如果表中数据是顺序写入那二叉树就变成单向链表了。

如果写入的数据是有顺序的,比如:1,2,3,4,5,6索引结构就是下面这样。

二、平衡二叉树

    平衡二叉数会比对存储的数据,会自动对索引页进行LL旋转和RR旋转,让两边的索引页大概一至。因为每个索引叶子节点只有两个子节点,所以当数据量很大时索引的高度会增加,这也会磁盘IO有很大的影响。每一次访问索引都会访问一次磁盘IO。

三、B-Tree树

    索引和数据存在一起,索引指针会指到下一个索引指针,索引指针两边就是数据。当对于大表和表中数据很多时存在碎片,表损坏后难以修复,修改数据和创建索引时都会对数据重新排序。

四、B+Tree树

      索引指针指向的是索引指针,直到最后索引子节点才会指到物理数据,在查询走索引时速度上是最快。如果字段是一个INT类型就占用4个字节,索引指针占6个字节,那一个索引页可以存储16KBX1024字节=16384字节,16384/(4+6)=1638行数据。如果索引高度为2那可以存储1638X2=26208行数据。那高度为3可以存储1638X1638X16=42928704条数据。

五、Hash索引

   Hash索引是数据库底层实现的,主要是以哈希(Key - Value)值进行比对。只能使用等号进行搜索,不能进行范围查询,数据不是按照索引顺序存放的,所以也不能用于排序。

相关推荐