【MySQL面试复习】了解过索引吗?(索引的底层原理)/B 树和B+树的区别是什么?

系列文章目录

在MySQL中,如何定位慢查询?
发现了某个SQL语句执行很慢,如何进行分析?


  • 系列文章目录
  • 了解过索引吗?(索引的底层原理)
  • B 树和B+树的区别是什么?


了解过索引吗?(索引的底层原理)

在这里插入图片描述

如果没有索引,要找到某条特定的记录需要遍历整张表。在这种情况下,如果表中数据特别多,那么全表扫描就会很耗时,效率就会很低。但是如果将数据按照某种方式进行排序组合,比如二叉搜索树,那么就不用全表扫描了。在mysql中,一般都是用B+树作为索引结构。


B 树和B+树的区别是什么?

要说为什么用B+树,就要说说为什么不使用其他的数据结构。不用二叉搜索树我认为有两个原因。一个是二叉树中每个结点最多有两个子节点,那么如果数据量很大的话,就会让这个二叉树变的很大,那么存储起来以及查找的时候次效率就不会太高。其次是在二叉搜索树中,极端情况下它会退化成为一个链表,链表的查找速率是很低的,综上,二叉搜索树不合适。红黑树也属于二叉搜索树,虽然避免了极端情况的出现,但它终究还是二叉树。所以也不使用。

那么接下来要解决的问题就是如何让一棵树变小,应该说是变矮。那就不能使用二叉树,这样就出现了B树,它是一种多叉路的平衡查找树。相对于二叉树,B树的每个结点可以有多个子节点。并且数据也是存储在B树里的。

在这里插入图片描述
而mysql实际使用的是B+树它是在B树基础上的一种优化,它更适合实现外存储索引结构。区别在于非叶子结点只存储指针,不存储数据。叶子结点存储真正的数据,并且叶子结点间链接成一个双向循环链表。所以非叶子结点就不需要特别大的存储容量。所以整体来说磁盘读写代价更低,效率更高。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

行为树入门:BehaviorTree.CPP Groot2练习(叶子节点)(2)

以《行为树BehaviorTree学习记录1_基本概念》练习。 1 SequenceNode顺序控制节点 代码下载 git clone https://gitee.com/Luweizhiyuan2020/ros2_bt.git例程 1.1 sequence 顺序执行 下载版本SequenceNode1。 1.2 ReactiveSequence 异步执行 注意: ①only a…

Ruoyi框架上传文件

axios资料:axios中文文档|axios中文网 | axios axiosjson 默认情况下,axios将JavaScript对象序列化为JSON。 submit(data) {if (data && this.definitionId) {// 启动流程并将表单数据加入流程变量startProcess(this.definitionId, JSON.string…

【深度学习笔记】5_2 填充和步骤

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 5.2 填充和步幅 在上一节的例子里,我们使用高和宽为3的输入与高和宽为2的卷积核得到高和宽为2的输出。一般来说&#xff0…

Python中的os库

一.OS库简介 OS是Operating System的简写,即操作系统。 OS库是一个操作系统接口模块,提供一些方便使用操作系统相关功能的函数。 二.OS库常用函数 2.1文件和目录 2.1.1:os.getcwd() 作用:返回当前工作目录,结果是…

Vue3学习——路由prop配置、replace

写法一 在路由中可直接写prop: true&#xff0c;即可在页面中defineProps使用 相当于&#xff08;<Detail id“1” name“2” />&#xff09;,但只能是params {path: /service,name: 服务,component: () > import(../views/Service/index)&#xff0c;props: true}…

蓝桥杯前端Web赛道-寻找小狼人

蓝桥杯前端Web赛道-寻找小狼人 题目链接&#xff1a;0寻找小狼人 - 蓝桥云课 (lanqiao.cn) 题目要求&#xff1a; 其实通过题目要求以及题目中提供的gif可知&#xff0c;该题就是需要我们手动写出能够代替filter函数的函数 我们先分析题目给出的代码&#xff1a; let newcar…

Linux:Ansible的常用模块

模块帮助 ansible-doc -l 列出ansible的模块 ansible-doc 模块名称 # 查看指定模块的教程 ansible-doc command 查看command模块的教程 退出教程时候建议不要使用ctrlc 停止&#xff0c;某些shell工具会出现错误 command ansible默认的模块,执行命令&#xff0c;注意&#x…

单片机复位按键电路、唤醒按键电路

目录 单片机复位按键 外部手动复位 单片机复位按键电路 复位按键电路1 复位按键电路2 单片机唤醒按键 单片机唤醒按键电路 单片机复位按键 单片机复位&#xff1a;简单来说&#xff0c;复位引脚就是有复位信号&#xff0c;就是从头开始执行程序 本质&#xff1a;就是靠…

开源大模型LLM大爆发,数据竞赛已开启!如何使用FuseLLM实现大语言模型的知识融合?

开源大模型LLM大爆发&#xff0c;数据竞赛已开启&#xff01;如何使用FuseLLM实现大语言模型的知识融合&#xff1f; 现在大多数人都知道LLM是什么&#xff0c;以及可以做什么。 人们讨论着它的优缺点&#xff0c;畅想着它的未来&#xff0c; 向往着真正的AGI&#xff0c;又有…

NOIP 2008 普及组初赛试题及解析

NOIP 2008 普及组初赛试题及解析 一. 单项选择题 &#xff08;共20题&#xff0c;每题1.5分&#xff0c;共计30分。每题有且仅有一个正确答案.&#xff09;。二. 问题求解&#xff08;共2题&#xff0c;每题5分&#xff0c;共计10分&#xff09;三. 阅读程序写结果&#xff08;…

【JavaScript】手写 Promise(Promise\A+测试)

手写Promise-Promise\A测试 接下来咱们来测试一下手写Promise的代码能否通过Promise\A测试 Promise\A规范: Promise\A是社区推出的规范,其实最早Promise也是社区推出并实现的,旨在规范Promise的实现,里面约定了: 状态必须是:pending,fulfilled,rejectedthen方法的详细实现细…

ElasticSearch之suggester API

写在前面 当我们在使用搜索引擎进行的查询到时候&#xff0c;如果是输入错误的话&#xff0c;搜索引擎会给出一些搜索建议&#xff0c;如下&#xff1a; 在es中也提供了类似的功能&#xff0c;叫做suggester API。 1&#xff1a;原理和种类 原理是将查询的信息分为很多个词…

微服务Springcloud智慧工地APP源码 AI人工智能识别 支持多工地使用

目录 一、现状描述 二、行业难点 APP端功能 一、项目人员 二、视频监控 三、危大工程 四、绿色施工 五、安全隐患 AI智能识别 环境监测 实名制管理 智慧监测 智慧工地全套解决方案 一、现状描述 建筑工程建设具有明显的生产规模大宗性与生产场所固定性的特点。建…

Springboot+vue图书管理系统(小白)

图书管理系统 简介&#xff1a;一个最简约的图书管理系统&#xff0c;适用于小白用来练手 前端&#xff1a;VueElementUIechars 后端&#xff1a;SpringbootMybatisMySQL 功能模块&#xff1a; 信息管理&#xff1a;公告信息 操作日志 用户管理&#xff1a;用户信息 图书…

【NTN 卫星通信】基于NTN和TN的Inter-PLMN海事应用场景

1 场景概述 NTN和TN联合组网的场景&#xff0c;可以有多种应用方式&#xff0c;以下用例描述了同时使用多个卫星PLMN和一个地面5G PLMN的海事场景。 MNO-G是一家成熟的卫星PLMN运营商&#xff0c;运营着几颗GEO卫星。MNO-L是一个相对较新的卫星PLMN运营商&#xff0c;操作LEO卫…

Android布局优化之include、merge、ViewStub的使用,零基础入门android

面试了一位工作12年的程序员&#xff0c; 这位老哥有3年java开发经验&#xff0c;2年H5&#xff0c;7年Android开发经验&#xff0c;简历上写着精通Java&#xff0c;Android&#xff0c;熟悉H5开发。没有具体的技术点。 说实话我很期待这位老哥的面试&#xff0c;于是让人事邀…

STM32 Cubemx配置SPI编程(使用Flash模块)

文章目录 前言一、W25Q64模块介绍二、STM32Cubemx配置SPI三、SPI HAL库操作函数分析3.1查询方式3.2中断方式 四、Flash时序分析1.读器件ID指令2.写使能3.擦除扇区4.页编程5.读数据6.读状态寄存器 五、Flash驱动程序编写1.代码编写测试 总结 前言 本篇文章来为大家讲解一下Flas…

华为云项目部署

前端部署 将dist文件夹下的内容拷贝到/usr/local/nginx/html下 #启动脚本是在 # /usr/local/nginx/sbin/nginx #启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #停止 /usr/local/nginx/sbin/nginx -s stop #重载 /usr/local/nginx/sbin/nginx -s rel…

【基于React实现共享单车管理系统】—项目简介(一)

【基于React实现共享单车管理系统】—项目简介&#xff08;一&#xff09; 一、项目整体架构

springboot227旅游管理系统

springboot旅游管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅游管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助使用者在…
最新文章