[MySQL]索引
目录
概念解释
作用/优点
缺点
适用场景
索引的创建,删除与查看
系统对索引的自动创建
索引建立的时机
索引存储的数据结构
选择B+树的原因
B树的原理
查询流程
优点
B+树
与B树的区别
优点
概念解释
索引就像是一本字典的目录,我们可以根据目录快速定位到我们想要查找的字词
作用/优点
在数据库中,索引起到的作用是:
- 提升了数据库中查询数据的效率
- 降低数据库IO的成本(通过B+数来实现)
缺点
- 索引的创建是需要花费额外的空间
- 建立索引后,对于数据库中数据的增,删,改可能会增加耗费的成本,因为除了对数据库中数据的更改还要对索引进行调整.导致了效率的降低.
适用场景
根据上面的优点和缺点,可以看出索引的适用场景为:
频繁的进行查询操作,但不常对数据的增,删,改操作的表.
索引的创建,删除与查看
create index 索引名 on 表名(字段名); //创建普通索引
drop index 索引名 on 表名; //删除索引
show index from 表名; //查看索引
系统对索引的自动创建
对于表中的主键,外键和被unique修饰的属性,系统会自动创建出对应的索引.
- 因为主键是大多数情况下对数据进行定位的属性,需要频繁查询.
- 而外键是与其他表进行连接查询的属性,也需要频繁的查询.
- unique则是在插入或修改数据的时候,需要先对表进行扫描一遍,查看unique修饰的属性是否有与即将插入的字符一致的数据
系统建立的索引我们是删除不掉的噢
索引建立的时机
索引的建立应当在初期(没有数据,或数据较少的时期)设计数据库表的时期一同设计,因为当表中已经存在了较多的数据的时候建立索引,就会消耗巨大的时间成本.
因为索引相当于给每一个数据都建立了一个定位,数据太多的画就要一遍一遍的对已存在的数据进行描扫.而且与此同时,在建立索引的时候,整个数据库其实是处于一种封锁的状态,并不能进行其他的操作.
如果在初期数据还没有存储或数据较少的时候建立起索引,消耗的时间成本就会非常小.以后每次新增添数据的时候再顺带的放入索引,相当于将时间均摊到每一条对数据的操作语句上.就比较容易让人接受
索引存储的数据结构
B+树
选择B+树的原因
1.hash
只能进行准确的定位,并不能满足于MySQL中的模糊查询(like),与范围查询
2.红黑树
虽然能满足模糊查询与范围查询,但是由于红黑树是一颗二叉树,存储数据会容易导致树的高度过高.在查询数据的时候可能会频繁的对磁盘进行读取,使得IO次数增加
所以一种专门为数据库量身定做的数据结构,B树被开发出来了.而B+树是B树的一种变形.
B树的原理
B树是一种N叉搜索树
结点中N个key会有N+1个key结点

查询流程
从根结点出发 -> 查看目标是否存在此结点,
如果不存在,就看元素是落在此结点的哪一个区间内,根据区间继续往下面的子树找.
如果存在,则返回.
优点
1.由于B树是N叉搜索树,且一个结点可以存放多个数据.对于总的元素个数来说,B树的高度会远小于二叉树.
2.树高度的减少,就会相应的降低了从磁盘中读取数据的次数,降低了IO的成本
B+树

与B树的区别
-
- 与B树不同的点是,B+树一个结点N个key只会有N个子树.
- 且B+树的子结点会包含有父亲结点中区间内最大的元素.
优点
可以看到B+树的叶子结点中,包含了整棵树的所有结点,是一个全集.此时再帮叶子结点建立链接,就像链表一样.
1.因为这个特性,B+树就特别擅长范围查找.

2.只有叶子结点储存行单元,非叶子结点存储行单元的主键.
节省了存储的空间,B+树就会变得特别小,可以直接放在存储空间中.又提升了读取数据的效率(B树的叶子结点不是全集,每一个结点的元素都是一个行单元)

3.N叉树的特性,树高度不高,减少了IO次数
相关文章:
[MySQL]索引
目录 概念解释 作用/优点 缺点 适用场景 索引的创建,删除与查看 系统对索引的自动创建 索引建立的时机 索引存储的数据结构 选择B树的原因 B树的原理 查询流程 优点 B树 与B树的区别 优点 概念解释 索引就像是一本字典的目录,我们可以根据目录快速定位到我们想…...
什么是AUTOSAR ComStack,AUTOSAR架构中,CAN通信堆栈CAN Communication Stack介绍
AUTOSAR(Automotive Open System Architecture)ComStack指的是AUTOSAR架构中的通信堆栈。在AUTOSAR体系结构中,ComStack是指用于不同软件组件(如应用软件、基础软件等)之间进行通信的一组协议和服务。 在AUTOSAR架构中…...
黄金期货与黄金现货的区别
黄金期货与黄金现货是有区别的,比如在交易机制方面,黄金期货有具体的交割日,合约到期就必须交割,否则会被强行平仓或以实物进行交割,而在保证金不足时也会被强行平仓;而现货黄金就没有交割限制,…...
【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)
文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表e. 压缩稀疏行(Compressed Sparse Row,CSR)矩阵结构体创建CSR矩阵元素设置初始化打印矩阵销毁…...
springboot整合postgresql
使用docker安装postgres 简单起见,这里用docker来安装postgresql docker pull postgresdocker run --name postgres \-e POSTGRES_PASSWORD123456 \-p 5432:5432 \-v /usr/local/docker/postgresql/data:/var/lib/postgresql/data \-d postgrespostgres客户端 pg…...
C#__委托delegate
委托存储的是函数的引用(把某个函数赋值给一个委托类型的变量,这样的话这个变量就可以当成这个函数来进行使用了) 委托类型跟整型类型、浮点型类型一样,也是一种类型,是一种存储函数引用的类型 using System.Reflec…...
Jupyter Notebook的安装方法以及生成ipykernel
1. 安装Python和pip Jupyter Notebook是基于Python的,因此首先需要在电脑上安装Python和pip。可以通过访问Python官网(Welcome to Python.org)下载安装包进行安装。在安装Python的过程中,会提示是否安装pip,选择安装即可。 2. 安装Jupyter …...
测试员如何快速复现bug?一款合适的视频录制软件了解一下
你是不是还在为描述缺陷复现步骤而苦恼?你是不是还在为寻找一款合适的视屏录制软件而挣扎?那么,你应该好好看看这篇小文章。 作为测试人员,撰写测试用例、提交测试缺陷是基本工作。但往往我们会遇到:开发人员无法根据…...
论文-分布式-并发控制-并发控制问题的解决方案
目录 参考文献 问题 解法与证明 易读版本 参考文献 Dijkstra于1965年发表文章Solution of a Problem in Concurrent Programming Control,引出并发系统下的互斥(mutual exclusion)问题,自此开辟了分布式计算领域Dijkstra在文中给出了基于共享存储原子…...
【网络协议】聊聊http协议
当我们输入www.baidu.com的时候,其实是先将baidu.com的域名进行DNS解析,转换成对应的ip地址,然后开始进行基于TCP构建三次握手的连接,目前使用的是1.1 默认是开启了keep-Alive。可以在多次请求中进行连接复用。 HTTP 请求的构建…...
图神经网络论文笔记(一)——北邮:基于学习解纠缠因果子结构的图神经网络去偏
作者 :范少华 研究方向 :图神经网络 论文标题 :基于学习解纠缠因果子结构的图神经网络去偏 论文链接 :https://arxiv.org/pdf/2209.14107.pdf https://doi.org/10.48550/arXiv.2209.14107 大多数图神经网络(GNNs)通…...
java初始化list的几种方式
在Java中初始化List有以下几种常见的方式: 使用Arrays.asList()静态方法: List<Integer> list1 Arrays.asList(1, 2, 3);使用List接口的实现类ArrayList的构造函数: List<String> list2 new ArrayList<>();使用Collections.singletonList() String obj…...
Linux:文件操作
目录 一、关于文件 1、文件类的系统接口 2、文件的含义 二、文件操作 1、C语言文件相关接口 2、系统接口 open close write read 三、文件描述符 关于fd fd的分配规则 输出重定向示例 输入重定向示例 追加重定向示例 dup2函数 缓冲区 stdout与stderr perror…...
vue源码笔记之——运行时runtime
源码中的位运算 按位于 运算 if (shapeFlag & ShapeFlags.TELEPORT) {解释:如果shapFlag本身值为8,type为1的话,那么转换为二进制(js都是32位)那就是 shapFlag:00000000 00000000 00000000 00001000 …...
MySQL数据库干货_09—— MySQL中的外键约束(Foreign Key)
外键约束(Foreign Key) 添加外键约束 使用DDL语句添加外键约束 ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY( 列 名 ) REFERENCES 参照的表名(参照的列名);示例一: 创建 departments 表包含 department_id 、department_name ,location_id。…...
springboot配置https
SSL : secure socket layer 是一种加密协议,SSL主要用于保护数据在 客户端和服务器之间的传输,,防止未经授权的访问和窃取敏感信息 在腾讯云申请ssl证书 申请了之后在我的域名中,,解析 解析了之后&…...
java - IDEA IDE - 设置字符串断点
文章目录 java - IDEA IDE - 设置字符串断点概述笔记END java - IDEA IDE - 设置字符串断点 概述 IDE环境为IDEA2022.3 在看一段序列化的代码, 想找出报错抛异常那个点, 理解一下代码实现. 因为序列化代码实现在第三方jar包中, 改不了(只读的). 根本数不清第几次才会开始报…...
【图像分类】基于计算机视觉的坑洼道路检测和识别(ResNet网络,附代码和数据集)
写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的兄弟们可以私信…...
关于readline方法使用的一个中文乱码引发的思考
故事起源于这段代码,我想给一个本地地址然后去读取文件内容,然后使用了reader.readLine();方法,但是本地没有任何报错,但是线上中文乱码导致直接报错了。 BufferedReader reader;try {reader new BufferedReader(new FileReader(…...
BUUCTF 神秘龙卷风 1
BUUCTF:https://buuoj.cn/challenges 题目描述: 神秘龙卷风转转转,科学家用四位数字为它命名,但是发现解密后居然是一串外星人代码!!好可怕! 密文: 下载附件,解压得到一个.rar压缩…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 框架,SqlSugar 就是其中备受…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
