[MySQL]索引

news2024/11/18 17:48:51

目录

概念解释

作用/优点

缺点

适用场景

索引的创建,删除与查看

系统对索引的自动创建

索引建立的时机

索引存储的数据结构

选择B+树的原因

B树的原理

查询流程

优点

B+树

与B树的区别

优点


概念解释

索引就像是一本字典的目录,我们可以根据目录快速定位到我们想要查找的字词

作用/优点

在数据库中,索引起到的作用是:

  1. 提升了数据库中查询数据的效率
  2. 降低数据库IO的成本(通过B+数来实现)

缺点

  1. 索引的创建是需要花费额外的空间
  2. 建立索引后,对于数据库中数据的增,删,改可能会增加耗费的成本,因为除了对数据库中数据的更改还要对索引进行调整.导致了效率的降低.

适用场景

根据上面的优点和缺点,可以看出索引的适用场景为:

频繁的进行查询操作,但不常对数据的增,删,改操作的表.

索引的创建,删除与查看

create index 索引名 on 表名(字段名);  //创建普通索引
drop index 索引名 on 表名;  //删除索引
show index from 表名;  //查看索引

系统对索引的自动创建

对于表中的主键,外键和被unique修饰的属性,系统会自动创建出对应的索引.

  1. 因为主键是大多数情况下对数据进行定位的属性,需要频繁查询.
  2. 而外键是与其他表进行连接查询的属性,也需要频繁的查询.
  3. 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树的区别

    1. 与B树不同的点是,B+树一个结点N个key只会有N个子树.
    2. 且B+树的子结点会包含有父亲结点中区间内最大的元素.

优点

可以看到B+树的叶子结点中,包含了整棵树的所有结点,是一个全集.此时再帮叶子结点建立链接,就像链表一样.

1.因为这个特性,B+树就特别擅长范围查找.

2.只有叶子结点储存行单元,非叶子结点存储行单元的主键.

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

3.N叉树的特性,树高度不高,减少了IO次数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1155494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java架构师前沿技术

目录 1 导学2 信息物理系统2.1CPS的体系架构2.2 CPS的技术体系3 人工智能4 机器人5 边缘计算6 数字李生体7 云计算7.1 云计算的部署模式8 大数据想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导学 2 信息物理系统 信息物理系统(CPS)是控制系统、嵌入式系统的扩展与…

一张图讲清楚业务稳定性要如何做:SRE体系化稳定性方案

概述:作为一个SRE、运维工程师,当我们在治理系统稳定性时,方法有很多,但往往无从下手。本文以一张逻辑图的形式,为读者提供治理稳定性的体系化思路。 先上图: 1、治理目标 我们做稳定性的目标&#xff0c…

MySQL 基础学习笔记(二)

目录 1 约束1.1 约束概述1.2 非空约束1.3 唯一约束1.4 主键约束1.5 默认约束1.6 外键约束 2 数据库设计2.1 数据库设计概述2.2 表关系 3 多表查询3.1 多表查询概述3.2 内连接查询3.3 外连接查询3.4 子查询 4 事务4.1 事务概述4.2 四大特征 1 约束 1.1 约束概述 约束是作用于表…

Whatsapp企业号如何增粉?5个措施帮到你

收集粉丝关注的方法有很多种,本文将会介绍九种有效的方式,可以参考。 在传播信息的过程中,我们要需要把客户放在第一位,你能提供给客户什么,实用价值或情绪价格。给人的感觉真实吗?足够透明吗?…

[黑马程序员Pandas教程]——Pandas快速体验

目录: 为什么要使用Python做数据开发Python在数据开发领域的优势为什么要学习Pandas其他常用Python库介绍主要内容介绍Anaconda安装Anaconda的虚拟环境管理虚拟环境的作用可以通过Anaconda界面创建虚拟环境通过命令行创建虚拟环境通过Anaconda管理界面安装包也可以…

Linux C语言进阶-D2字符数组和字符串

字符数组:元素的数据类型为字符类型的数组 char c[10],ch[3][4]; 字符数组的初始化 逐个字符赋值,无\0 在下图中,剩余的会自动添加上\0,而在int中会自动添加0,和NULL其实是一个意思 用字符串常量有\0 字符数组长度计算 下图中&am…

你知道什么是 Ping 吗?

欢迎到我的博客浏览 胤凯 (oyto.github.io) 这次我们来看一下什么是 Ping 操作,以及它有什么用处,并且我们来动手实现一个简易版的 Ping 工具。 Ping 是什么? ​ ping 是一个计算机网络工具,通常用于测试网络连接的可达性和测…

服务器带宽忽然暴增,不停的触发告警

问题: 线上环境,服务器的外网下行带宽达到某个阈值,触发告警,查了下服务器的带宽监控信息,是从某个时间开始突然串上去的,然后监控图形非常有规律,都是每秒达到顶峰后,又立马下去了…

信息系统项目管理师教程 第四版【第9章-项目范围管理-思维导图】

信息系统项目管理师教程 第四版【第9章-项目范围管理-思维导图】 课本里章节里所有蓝色字体的思维导图

2023年云栖大会来啦!!(2022年就已经深受震撼)

2023云栖大会已经开始啦,让我们来回顾回顾去年的云栖大会吧。 云栖大会是中国阿里巴巴集团每年举办的一项技术盛会,前身可追溯到2009年的地方网站峰会,2011年演变为阿里云开发者大会,2015年正式更名为“云栖大会”,并且…

DL Homework 5

目录 习题4-1 对于一个神经元​编辑,并使用梯度下降优化参数w时,如果输入x恒大于0,其收敛速度会比零均值化的输入更慢。 习题4-5 如果限制一个神经网络的总神经元数量(不考虑输入层)为N1,输入层大小为​编辑,输出层大…

回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测

回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测 目录 回归预测 | Matlab实现RIME-CNN-SVM霜冰优化算法优化卷积神经网络-支持向量机的多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.RIME-CNN-SVM霜冰优化算…

[SHCTF 2023 校外赛道] reverse

week1 ez_asm 想不到第1题是个汇编,咱也不知道拿啥能弄成c,不过这题也不难,直接能看懂,关键部分。 取出异或0x1e然后保存,再取出-0xa再保存。 .text:0000000000401566 loc_401566: …

赛宁网安多领域创新成果亮相第五届“纵横”论坛

10月27日,第五届“纵横”网络空间安全创新论坛在安徽合肥举办,来自中央国家机关、地方政府、军队有关单位、高校、科研院所和部分高新技术企业的领导、专家和代表500余人参加。 本届论坛由军事科学院和国防科技大学等单位共同主办,国防科技大…

电脑出现找不到d3dcompiler_43.dll的情况怎么办,分享d3dcompiler_43.dll丢失的办法

在使用电脑时你是不是也遇到过“未找到d3dcompiler_43.dll”的情况?是使用电脑的过程中d3dcompiler_43.dll丢失是一个经常出现问题,是一件大概率的事情,但是对于不了解这个文件的小伙伴而言出现这个问题是一件棘手的事情,那么今天…

postman做接口测试

之前搞自动化接口测试,由于接口的特性,要验证接口返回xml中的数据,所以没找到合适的轮子,就自己用requests造了个轮子,用着也还行,不过就是case管理有些麻烦,近几天又回头看了看postman也可以玩…

悠络客携新品UMind亮相安博会,从深耕商业连锁出发,正式进军ToG、ToC领域

2023年10月25日,第十九届中国国际社会公共安全博览会(CPSE安博会)在深圳会展中心隆重开幕。悠络客作为以公有云为核心的人工智能企业,联合海外事业部以全新面貌亮相展会现场。 本次参展,对悠络客而言有着非同寻常的重要…

【c++|opencv】二、灰度变换和空间滤波---4.高斯滤波

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 1. 高斯滤波 #include <iostream> #include <opencv2/opencv.hpp> #include"Salt.h"using namespace std; using namespace cv;/…

Android 13 Handler详解

1.Handler 简介 Handler 是一套 Android 消息传递机制。在多线程应用场景中&#xff0c;将子线程中需要更新 UI 的操作消息&#xff0c;传递到 UI 主线程&#xff0c;从而实现子线程通知 UI 更新最终实现异步消息处理。说白了是用于线程之间的通信。 Handler主要有4个重要类&a…

对xss-labs靶场的一次XSS攻击

1、首先我们进入靶场&#xff0c;提示我们开始测试 2、我使用AWVS工具进行了先行扫描&#xff0c;发现爆出XSS漏洞 3、然后对症下药 在输入框中输入&#xff1a; <script>alert(document.cookie)</script> 4、进入下一关 5、我们直接执行<script>…