【MySQL--->索引】

news2024/11/26 18:26:09

文章目录

    • @[TOC](文章目录)
  • 一、索引概念
  • 二、B树与B+树
    • 1.B树的特点:
    • 2.B+树的特点:
    • 3.为什么使用B+树而不使用B树
  • 三、聚簇索引和非聚簇索引
  • 四、索引操作
    • 1.创建索引
    • 2. 删除索引
    • 3.全文索引

一、索引概念

mysql的查询的过程是从文件中提取到内存中查询,MySQL启动时会在内存中维护一个buffer pool缓冲区,操作数据之前要从磁盘将数据加载到缓冲区,为了减小IO次数MySQL与磁盘的IO单位page是16KB.将这些page组织成一个查询高效的数据结构,这个数据结构就是索引
MySQL索引结构是B+树,索引按照存储引擎分为innodb的聚簇索引和非聚簇索引.按照搜索关键字分为主键索引和普通索引.

二、B树与B+树

1.B树的特点:

B树也叫平衡多路查找树,M阶B树叫做M叉树
1.节点中可以存储多个值(索引),并且从小到大排列.
2.节点即存储键值又存储数据
3.根节点的节点数有[2,M]个子节点
4.除根节点以外的非叶子节点个数为值的个数-1,最大超过M-1.
5.叶子节点都位于同一层.

2.B+树的特点:

B+树是在B树的基础上衍生出来的.
1.根节点可能是叶子节点,也可能是子节点[2,M]的树
2,索引节点有K个值,就有K+1个分支几点.
3.所有叶子节点用指针链接,并从小到大排列.
4.非叶子节点只存储key值,不存储数据,只有叶子节点存储数据.
5.有两个头结点,一个根节点,一个最小的叶子节点.

3.为什么使用B+树而不使用B树

1.表是存储在磁盘中的,要操作表中的数据需要从磁盘提取数据到内存.B+树只有叶子节点存储数据,其他节点只存储key值,所以树的高度相对较低,搜索路径较短,IO次数少.而B树的内部节点存储的是键值对,树的高度相对较高,IO次数多.io开销大,因为磁盘到内存的传输速度慢,数据定位会有寻道时间和旋转延迟.
2.B+树的所有叶子节是一个链表,并且有序,范围查询遍历链表即可,而B树每查询一个都需要从根节点重新遍历查询,范围查询效率低.

三、聚簇索引和非聚簇索引

innodb存储引擎和myisam存储引擎使用的都是B+树索引结构,但是innodb是将数据存储在叶子节点,而myisam是将索引结构和数据分开存储的,索引叶子节点存储的是数据记录的地址。 像innodb这样的索引结构称为将聚簇索引,myisam这样的称为非聚簇索引

除了主键索引,允许添加其他非主键索引,聚簇索引的非主键索引的叶子结点是存储的主键,利用非主键索引找到主键,再利用主键找到整条数据,非聚簇索引的非主键索引则跟主键索引相同,叶子结点都是存储的数据记录的地址.

四、索引操作

1.创建索引

创建主键索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建唯一键索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建其他普通索引
在这里插入图片描述
在这里插入图片描述
创建复合主键索引
复合主键索引是多列组合成的主键,查询时,用复合建最左边列的值查找复合建右边的值,从主键的左往后右一次匹配能匹配上,就能直接返回,这加索引覆盖.

2. 删除索引

删除主键索引
在这里插入图片描述
删除唯一键索引
在这里插入图片描述
删除普通索引
在这里插入图片描述

3.全文索引

创建全文索引
在这里插入图片描述
在这里插入图片描述
普通查询
在这里插入图片描述
全文索引查询
在这里插入图片描述


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

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

相关文章

fastjson 1.2.24 rce漏洞复现

一、漏洞特征 fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。即fastjson的主要功能就是将Java Bean序列化成JSON字符串,这样得到字符…

VR全景如何助力乡村振兴,乡村发展在哪些方面用到VR全景技术

引言: 乡村振兴是当今中国发展的重要战略,也是推动农村经济社会全面发展的关键举措。在这一过程中,虚拟现实(VR)全景技术正逐渐崭露头角,为乡村振兴提供了机遇。 一.VR全景技术的概念和应用 1…

vue项目中订单完成提交按钮动画

1. 动画1 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>Order</title><!-- <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/re…

CreateProcess error=206, 文件名或扩展名太长

IDEA编译启动springboot项目时&#xff0c;提示这个异常&#xff0c;可以使用以下方式解决&#xff1a; 打开run-->edit configurations-->选择你启动报错的AppLication&#xff0c;如下图配置即可&#xff08;仅限于楼主的解决方式&#xff0c;不保证百分百覆盖&#x…

docker部署mysql nginx redis

一.创建网络 # 创建网络 docker network create liming # 查看网络 docker network ls二.部署mysql 删除并重新创建mysql容器&#xff0c;并完成本地目录挂载&#xff1a; 挂载/software/mysql/data到容器内的/var/lib/mysql目录挂载/software/mysql/init到容器内的/docker-…

微型导轨在医疗设备中起什么作用?

微型导轨因其高精度、小型化和轻量化的特点&#xff0c;被广泛应用于各种需要高精度和小型化的机器中&#xff0c;如数控机床、工业机器人、光学仪器、医疗设备和自动化设备等&#xff0c;尤其是医疗领域&#xff0c;其应用最为广泛。 1、手术机器人&#xff1a;手术机器人是医…

HackTheBox-Starting Point--Tier 1---Bike

文章目录 一 题目二 实验过程三 服务器端模版引擎注入&#xff08;SSTI&#xff09;1.什么是模版引擎2.SSTI3.挖掘SSTI4.执行payload 一 题目 Tags Web、Injection、Custom Applications、NodeJS、Reconnaissance、Remote Code Execution、Server Side Template Injection (S…

Maven中的继承与聚合

一&#xff0c;继承 前面我们将项目拆分成各个小模块&#xff0c;但是每个小模块中有很多相同的依赖于是我们创建一个父工程将模块中相同的依赖定义在父工程中&#xff0c;然后子工程继承父工程Maven作用&#xff1a;简化依赖配置&#xff0c;统一依赖管理,可以实现多重继承像J…

uniapp使用vue3和ts开发小程序自定义tab栏,实现自定义凸出tabbar效果

要实现自定义的tabbar效果&#xff0c;可以使用自定义tab覆盖主tab来实现&#xff0c;当程序启动或者从后台显示在前台时隐藏自带的tab来实现。自定义一个tab组件&#xff0c;然后在里面实现自定义的逻辑。 组件中所使用的组件api可以看&#xff1a;Tabbar 底部导航栏 | uView…

Digicert证书是什么?

DigiCert是全球领先的数字信任提供商&#xff0c;使个人和企业能够自信地在线参与&#xff0c;相信他们在数字世界中的足迹是安全的。DigiCert通过塑造全球行业标准、提供卓越的全球合规性和运营、为公共和私人信任提供证书生命周期管理以及将信任扩展到供应链和互联生态系统&a…

IO多路复用笔记

O多路复用是一种同步的IO模型。利用IO多路复用模型&#xff0c;可以实现一个线程监视多个文件句柄&#xff1b;一旦某个文件句柄就绪&#xff0c;就能够通知到对应应用程序进行相应的读写操作&#xff1b;没有文件句柄就绪时就会阻塞应用程序&#xff0c;从而释放出CPU资源。 …

mysql之备份和恢复

&#xff08;一&#xff09;备份 1、备份的种类 &#xff08;1&#xff09;完全备份&#xff1a;将整个数据库完整的进行备份 &#xff08;2&#xff09;增量备份&#xff1a;在完全备份的基础上&#xff0c;对后续新增的内容进行备份 2、备份的需求 &#xff08;1&#x…

响应式建筑房地产开发企业网站模板源码带后台

模板信息&#xff1a; 模板编号&#xff1a;5635 模板编码&#xff1a;UTF8 模板颜色&#xff1a;红色 模板分类&#xff1a;基建、施工、地产、物业 适合行业&#xff1a;房地产类企业 模板介绍&#xff1a; 本模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#xff0…

webgoat-(A1)SQL Injection

SQL Injection (intro) SQL 命令主要分为三类&#xff1a; 数据操作语言 &#xff08;DML&#xff09;DML 语句可用于请求记录 &#xff08;SELECT&#xff09;、添加记录 &#xff08;INSERT&#xff09;、删除记录 &#xff08;DELETE&#xff09; 和修改现有记录 &#xff…

python数据结构和算法基础(第一节,数据结构和算法基础)

01.算法引入 02.时间复杂度和大o表示法 2.1时间复杂度与大o表示法 引入&#xff1a; 2.1时间复杂度与大o表示法 pycharm中&#xff0c;快速多行注释&#xff0c;ctrl/ 2.2最坏时间复杂度与计算规则 2.3常见时间复杂度与大小关系 03.python列表和字典 3.1代码执行时间测量木…

归并排序(c语言代码实现)

归并排序&#xff08;稳定的排序&#xff09;&#xff1a; 归并排序是一种分治策略的排序算法&#xff0c;其基本思想是将待排序数组分成两个子数组&#xff0c;分别对这两个子数组进行排序&#xff0c;然后合并这两个已经排序好的子数组&#xff0c;最终得到完整的已排序数组…

【C++】万字详解IO流(输入输出流+文件流+字符串流)

文章目录 一、标准输入输出流1.1提取符>>&#xff08;赋值给&#xff09;与插入符<<&#xff08;输出到&#xff09;理解cin >> a理解ifstream&#xff08;读&#xff09; >> a例子 1.2get系列函数get与getline函数细小但又重要的区别 1.3获取状态信息…

以色列战术耳机公司【Silynxcom】申请1000万美元纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于以色列的战术通信耳机和配件公司Silynxcom Ltd&#xff0c;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为…

【Mac开发环境搭建】JDK安装、多JDK安装与切换

文章目录 JDK下载与安装下载安装 配置环境变量安装多个JDK共存 JDK下载与安装 下载 Oracle官网提供了非常多个版本的JDK供下载&#xff0c;可以点击如下链接重定向到JDK下载页面 ORACLE官网JDK下载 安装 下面的官方文档可以点开收藏到浏览器的收藏夹&#xff0c;这样后续在开…

纯前端实现的验证码

需求 前端实现验证码输入封装 本质绘制随机数&#xff0c;并进行校验function GVerify(options) { // 创建一个图形验证码对象&#xff0c;接收options对象为参数this.options { // 默认options参数值id: , // 容器IdcanvasId: verifyCanvas, // canvas的IDwidth: 100%, // 默…