首页 > 数据库 >Mysql索引

Mysql索引

时间:2022-10-04 16:33:38浏览次数:207  
标签:Tree 查询 索引 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,表示排序没使用索引,可以优化

  • 添加索引

标签:Tree,查询,索引,Mysql,节点,数据,主键
From: https://www.cnblogs.com/qhlb/p/16753985.html

相关文章

  • 索引组织表
    索引组织表的存储组织是主B树的变体。与数据存储为无序集合(堆)的普通(堆组织)表不同,索引组织表的数据以主键排序的方式存储在B树索引结构中。索引结构中的每个叶块都存储键列......
  • 一文读懂 MongoDB 和 MySQL 的差异
    下面讨论MongoDB和MySQL在各种参数上的差异:什么是MongoDB和MySQL?MongoDBMySQLMongoDB是由MongoDB,Inc.开发的开源数据库。MongoDB将数据存储在类似JSON的文档中,这......
  • 查看MySQL服务
    MySQL的服务在哪里:计算机-->右键-->管理-->服务和应用程序-->服务-->找MySQL服务MySQL的服务,默认是“启动”的状态,只有启动了mysql才能用默认情况下是“自动”启动,自动......
  • 安装与卸载MySQL
    安装MySQL数据库管理系统第一步:先安装,选择“经典版”第二步:需要进行MySQL数据库实例配置注意:一路下一步就行了!!!!!需要注意的事项:端口号:端口号port是任何一个软件/应......
  • 阿里云服务器中MySQL数据库被攻击
    前几天刚领了一个月的阿里云服务器玩,在里面装了MySQL,然后这几天找了个小项目练习着玩呢,就将表建在里面了。刚访问添加员工还好好的,刚给员工分页查询呢,啪一下,很突然昂,就......
  • 【学习笔记】Mysql函数
    Mysql函数 常用函数数学运算SELECTABS(-100)  --绝对值SELECTCEILING(6.5) --向上取整SELECTFLOOR(6.5)  --向下取整SELECTRAND()   ......
  • mysql8 navicat连接数据库报错
    一、报错场景mysql安装成功后,通过cmd连接mysql可以连接成功,但是通过navicat连接数据库时,报错。无法连接成功二、原因mysql8开始,数据库密码的加密方式发生变化。由原来的......
  • (五)MySQL基础继续--连接(join)
    昨天在说MySQL的分组(groupby)时,最后有提到为什么会多出来一行-->null,原来null表示所有人加起来的数。mysql>selectname,sum(scores)asscores_countfromteacherg......
  • 【MySQL从入门到精通】【高级篇】(二十一)数据库优化步骤_查看系统性能参数
    文章目录​​1.简介​​​​2.数据库服务器的优化步骤​​​​3.查看系统性能参数​​​​总结​​1.简介上一篇文章我们介绍了哪些情况下适合创建索引,哪些情况下不适合......
  • MySQL主从同步
    MySQL主从同步1.主从同步的定义主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。......