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 @   互联网农民工  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示