java0104. MySQL 高级 - 索引 - 概述

目录

简介

什么是索引?索引的作用?

未建立索引的情况

建立索引的情况

非索引和索引性能比较


简介

讲解了Linux系统中MySQL的安装以及MySQL的启动之后,接下来我们进入到课程内容的第二个部分:索引

那对于MYSQL当中的,所以我们在这块儿主要讲解以下六个方面的内容。

那首先我们需要来讲解的就是 MySQL 当中索引的概述。那希望通过这个索引概述这小节的学习,大家能够掌握。

什么是索引?索引的作用?

第一点什么是索引?第二点索引的作用是什么?能够理解这两点即可。

那接下来呢,我们就进入到索引概述这一块儿的学习。那索引在MYSQL的官方网站上,他是这么来定义的,就是说索引是帮助MYSQL进行高效查询的一种数据结构。那这块儿实际上已经说明了,所以什么是索引,索引就是一种什么?就是一种数据结构。然后它的作用是什么呢?作用就是高效获取数据,或者叫高效查询

然后呢,在MySQL当中啊,除了在我们的表结构当中记录了相关的数据以外。那实际上还去维护了去查找这一部分数据的一个数据结构。而这部分的数据结构就以某种方式,指向了我们MySQL数据库表结构当中的这些记录。就指向了这些记录,例如如下表的记录

 然后呢,我们通过这种数据结构就可以快速的来查询表结构当中的数据,而这种查找数据的这种数据结构就就是索引。

所以呢,对于这一块儿,大家知道什么是索引,索引就是一种数据结构,它的作用是什么?作用就是为了高效获取数据。

未建立索引的情况

那接下来在这一块儿呢,给大家提供了这一幅示意图。这幅示意图当中就给大家描述了,没建立索引之前是什么样子,建立了索引之后又是什么样子。

 那接下来我们来分析一下,索引是怎么来进行高效获取数据的。好,我们来打开mspaint。打开我们这一块儿的一个画板,通过画板通过一幅图,给大家简单说明一下。大家来看,这是我们的一张数据库表。在数据库表的左侧这一块,则展示的是我们每一条记录对应的一个物理地址。然后右侧这一块儿呢,是我们两列,左侧这一块儿序号,右侧是一些数据值(ID)。

好,那接下来。数据库表结构有了,接下来我们要查询数据。查询哪个数据呢?我要查询ID为34的数据。查询ID为34的数据,那这个时候啊。因为我们只有表,那这个时候他就会自上往下的进行遍历,这个时候走到第一个发现,这一块儿的第一个就是34,这样的话我就查询一条记录,而且第一条就是那查询速度是不是就会很快。

 好,这只是第一种情况,接下来再来看,接下来我在这块儿要查询的是什么呢?

我要查询的这个ID是91,那这个时候你再想一想,如果查询的ID是91,我在这块儿需要从上往下进行遍历,遍历第一条记录不是,第二条记录不是,第三条记录还不是,到第四条记录,发现是91,是我们想要的数据。那这个时候我们需要去遍历这个列表4次,或者说需要去查找四次。

 然后接下来继续来看,如果我们在这一块儿遍历的不是91,而是遍历的是3,这个时候再来看,那接下来从上往下进行一次遍历,一直到遍历到列表的最底部,才把这个3查找到,这个时候就相当于我们要进行一个全表扫描。

 大家来看,对于我当前这幅示意图当中的这个表结构,里面的数据比较少,就七八条数据。但是如果在实际开发当中数据量比较大,我一张表当中存储了几百万、上千万的记录。那这个时候,我们在查找的时候从上往下进行,整表扫描,这种查询效率是非常慢的。这就是这一块儿给大家罗列的第一种情况,没有建立索引的情况,查询效率很慢

建立索引的情况

好,那接下来我们再来分析,有了索引之后,他又是如何进行快速查找的?我们来画第二幅图,那这个时候呢,我们有了表结构,我们还需要对表结构当中的这个字段来建立索引。

那建立索引这一块儿,我们刚才提到索引就是一种数据结构。那我们这里是不是可以考虑,使用一种数据结构来表示这一块儿的索引,这里我们采用的一种数据结构叫做二叉树

好。既然是一个树状结构,那首先进来的第一个节点就是34,那34这个节点呢,就作为了我当前树状结构的根节点。然后接下来继续起来,接下来ID是77,对于二叉树来说,它有个特点,在根节点进来之后,当我们在插入下一个节点的时候,他会拿来和根节点进行一个比较。如果比根节点小,放在我们的左边,生成一个左子树。如果比根结点大,放在右边这一块儿,作为右子树存在。那这个时候来看,77比34大,所以这个时候放34的右边。这是77,就是34这个根节点它的一个子节点。

             

   

好,继续来看,接下来ID为5,你想5是不是比34要小,我们刚才提到小放左边,放右边。是不是放左边,所以接下来34又有一个字节点5

接下来要进来的是91,比34肯定是要大,那这个时候那就意味着放34的右边,这个时候要说明了,我们当前用的是一个二叉树,也就意味着每一个结点最多只有几个分支?只有两个分支,所以叫二叉。那接下来如果有了2个分支之后,接下来91比34大,这个时候呢,应该放右边,但是右边已经有元素77,这个时候还要和77进行比较。比77大,依然要放77这一块儿的右边,作为77的一个子节点存在。

 明白。接下来继续来看,接下来是22,那接下来22的话比34小,走左边,比5大,那就是放在我们5这个节点的右边。

然后接下来还有另外的两个元素,一个是59。那59这个元素来看。59首先和34进行比较,那和34进行比较,比34要大,所以放右边,和77进行比较,比77要小,所以应该放在77的,叶子节点的左边,这是59。

接下来就还有最后的一个元素3。那3在这一块儿应该放在我们34的左边,并且放在5的左边的节点

好,那到此我们这个二叉树就已经构建完毕了,接下来我们再来分析一下。我构建了这样一个二叉树,他就能够提高我们的查询效率吗?

好,我们来看,二叉树构建好了之后,接下来我们再进行搜索,如果按照我们刚才的思路,我们先搜索34,这个时候他就要先到,我们的这个索引的这个结构,二叉树的结构当中来进行搜索。

在进行二叉树搜索的时候,它是从根结点开始搜的,最顶层的这个节点就是根结点。下面的这些节点,这叫叶子节点。查询34,走根节点就已经把数据查询到了,这个时候直接返回。

如果我们在这块儿查询的不是34,而是3,这个时候来看,那这个时候他先搜索根节点,发现3比根节点小还是比根节点大?3比根节点小,这个时候它走左边去搜索左子树。左子树左边的这个字数就叫左子树。搜索到5和3进行比较,3比5还要小,所以再去搜索5左边的这个字数字节点,这个时候就找到3。

 而找到了3之后,他是如何关联到我们的左边这块表结构当中的数据的呢?这个时候再来看我们刚才提到的一句话。在数据之外,数据库还维护着满足特定查找算法的数据结构就是我们提到的索引,这些数据结构以某种方式指向或引用数据

那也就意味着,我右边这一块儿的这个树状结构的数据,数据结构它是指向我们左边这一块儿的具体的数据的

找到了3这个ID,我通过这个指向以及引用,我是不是就能够找到这一条数据。那这样的话,我们就查找到了这个数据。

非索引和索引性能比较

那接下来我们再来分析一下,我们右侧建立了索引之后和左侧没建立这一块儿的索引之前,它的性能的一个提升。

来看。如果是左侧,我在这块儿要查询3,我需要把整张表结构当中所有的数据都进行遍历词,直到找到3这个ID。

但是,如果是右边的话,我在这一块儿来看,我们只需要找几次,找第一次34,找第二次5,第三次就是3。

那这样的话,我是不是就不用再去遍历整张表啦,通过这个树状结构就可以快速的定位到,我们这一块儿的具体的元素,那这就是我们的索引。

索引就是一个数据结构,它的主要目的就是快速的来查找我们的数据

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: MySQL是一种开源的关系型数据库管理系统,它是最流行的数据库之一。它可以在多种操作系统上运行,包括Windows、Linux和Mac OS等。MySQL具有高性能、可靠性和可扩展性等优点,被广泛应用于Web应用程序、企业级应用程序和移动应用程序等领域。初学者可以通过学习MySQL的基本概念、语法和操作来掌握它的使用方法。 ### 回答2: MySQL 是一种开源的关系型数据库管理系统,由于其开源、跨平台、易用性等特点,成为了当前最流行的数据存储方式之一。初识MySQL需要了解以下几个方面: 一、MySQL概述 MySQL 是一个关系型数据库管理系统。它可以进行快速、可靠、高效的大容量数据处理。其主要特点是在进行大量数据操作时速度快、延迟低。 MySQL 具有多线程能力,可以提高数据库的并发处理能力。而且还可以实现多个用户并发访问。 MySQL 采用客户端/服务器模式架构,安装简单,且性能和稳定性都相对较好。 二、 MySQL 的安装与配置 MySQL 可以在各种操作系统上安装,如在 Linux 上使用 apt-get 命令,也可以在 Windows 上使用安装程序。在安装完成后需要进行配置,包括设置 root 用户密码,指定数据存储路径,端口等。 三、MySQL 的基本概念 MySQL 中的一些基本概念包括: 1. 数据库(Database):MySQL 数据库是由一系列表组成的容器,用于存储数据。 2. 表(Table):表是 MySQL 数据库中最小的单元,用于存储数据。 3. 列(Column):表中的每个数据项都是基于列的。 4. 行(Row):每一行代表一条记录,实际上是一个记录的集合。 5. 主键(Primary key):一种特殊的约束,用于保证表中每个记录均有唯一标识,常用于在进行数据更新或删除时进行定位。 四、MySQL 的基本操作 MySQL 的基本操作包括增删改查等,其中最常用的是查询数据。关于查询数据,需要注意使用 SQL 语句,语法应正确且逻辑正确。 五、MySQL 的应用 MySQL 在各种场景下都有广泛的应用,如 Web 应用程序(例如在线商店、博客),移动应用程序,游戏等。由于其量级小、效率高、稳定性好的特点,深受开发者的欢迎。 总体来说,初识 MySQL 需要了解其基本概念、安装配置、基本操作等。作为开源的关系型数据库管理系统,MySQL 在各大领域都有广泛的应用,其影响力不断扩大。 ### 回答3: MySQL是一种关系型数据库管理系统(RDBMS)。它是一种开源软件,是世界上最广泛使用的关系型数据库管理系统之一。MySQL由瑞典MySQL AB公司所开发,现在由Oracle公司维护。 MySQL具有兼容性高、开放的源代码、体积小、性能优越、易于安装和配置等优点。MySQL广泛应用于Web服务器上,它与PHP、Python、Perl等编程语言之间有着良好的兼容性。 MySQL支持多种操作系统,如Linux、Windows、Unix、Free BSD等等。同时也支持多种编程语言,如C、C++、Java、PHP、Python、Perl等等。 在学习MySQL时,你需要掌握数据库创建、数据表创建、数据表间关系的定义和维护、记录插入、查询和修改等技能。MySQL是一个非常灵活、易于学习的数据库管理系统,但它的灵活性也可能会导致一些问题,例如由于外键、约束、索引等原因而引起的性能问题,因此,使用MySQL需要掌握一些基本知识。 此外,在MySQL学习过程中需要注意的是安全性问题。我们可以使用用户名和密码来保护我们的MySQL系统,确保只有授权的用户可以访问数据库。在创建用户时,我们需要为每个用户分配不同的权限,以便他们可以执行他们需要的操作而且不能执行其他命令。 总之,MySQL是一种非常强大、广泛使用的数据库管理系统,它不仅具有广泛的应用层面,而且易于学习和使用。因此,学习MySQL是每个开发者的必备技能之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值