Loading

Mysql索引

是什么

在MySQL进行查询时,需要将全部数据加载到内存之中,然后以页的形式进行遍历查询,这样的查询效率太低,于是有了索引这个概念,索引类似于目录,将数据关键字整理为索引,通过索引查询数据会大大提高查询效率

分类

物理存储

不同的存储引擎的索引类型不同

MyISAM使用聚簇索引

InnoDB使用非聚簇索引

聚簇索引

聚簇索引是通过索引聚集数据生成,默认使用主键,没有主键则使用非空唯一索引,没有唯一索引则使用六个字节的rowId充当主键,而数据是存储在树的叶子节点的data域之中

回表:辅助索引的叶子节点的data域存储的是主键索引的索引值。在查询数据时,需要先定位获取主键索引的索引值,然后通过这个索引值在主键索引结构之中查询数据

非聚簇索引

索引和数据分开存放

数据结构

B+tree,B Tree,Hash,红黑树,B+tree 是MySQL中被存储引擎采用最多的索引类型。

B+Tree与B Tree的区别

B+Tree

  • 数据存储在叶子节点之中

  • 节点包含的信息

    • 关键字

    • 指向下一层的指针

B Tree

  • 节点包含的信息

    • 关键字

    • 指向对应数据的指针

    • 指向下一层的指针

对比总结

  • B+Tree每一个节点会存储更多的信息,相对于B Tree来说可以使用更少的IO次数读取到更多的数据
  • B+Tree将数据都整合在了叶子节点,更方便与对数据进行统一处理

B+Tree与红黑树的区别

红黑树是平衡二叉树,但因为是二叉树,那么B+Tree相对于红黑树来说会深度会更大,进一步说就是红黑树检索到目标数据需要的磁盘IO次数会更多

B+Tree与HASH的区别

Hash查询数据的效率非常高,可以一次进行定位,不像B+Tree需要从根结点到叶子节点。

但是Hash结构的缺点在于他不能进行范围搜索,Hash结构是通过数据的hash值来进行定位,所以不能用于范围查找,只能用于查询确定的值。

为什么

优点

可以有效提高查询效率

缺点

索引有专门的索引表,占用空间

每次数据更新都需要对相应索引进行更新

怎么用(索引优化)

  • 开启慢日志,获取需要进行优化的SQL语句

  • 使用 explain 分析SQL语句

    俩个关键字段

    • type

      值为all,表示为全表查询,可以优化

    • extra

      Using fileSort,表示排序没使用索引,可以优化

  • 添加索引

posted @ 2022-10-04 16:30  互联网农民工  阅读(42)  评论(0)    收藏  举报