什么是索引?为什么要使用B树作为索引数据结构?

MySQL的事务特性

1.原子性:原子性就是这个事件要么执行完,要么没执行,不会存在中间状态,与C++中华那个加锁避免多线程竞争是一个道理;

2.一致性:保持事件的操作对象双方某数据之和是不变的,就以转账为例,A转给B100块,那么A的余额多100,B的余额就必须少100;

3.隔离性:隔离就是独立的,A事件正在进行时,B事件是看不到A时间的变化过程的,只能看到A事件的起始和结束状态;

4.持久性:事务提交上的数据会被永远的保存到数据库中,即便系统突然崩溃数据也不会发生变化;

MySQL索引

MySQL索引种类

普通索引:没有什么限制,可以字段中可以出现多个重复的数据,也可以为空

唯一索引:字段中的数据不可以重复,但是可以为空,前提是该字段可以为空

主键索引:通常在建表的时候就会加上的索引,就以主键类比即可,唯一+不为空

组合索引:某两个字段通常会被配合一块查询,所以就同时组合加上索引

全文索引:知道即可

索引原理

B树数据结构;

先不说什么是B树,我们就谈谈元组在表中的存储是什么数据结构--->指针数组

每一个指针指向一个元组;所以我们查找某一项数据的时候不就需要遍历数组吗;那遍历数组的复杂度不就是On吗,

对吧,先不说什么是索引,就单看现在你面前有个数组,你要查询,你怎么优化;

-->树型结构,对吧!

我们都知道搜索二叉树的就是用来查找的树型结构,一般时间复杂度是Ologn,对吧这就实现了优化,

那么回到上面的问题,我们该如何优化查找元组,就是一个优化数组搜索的问题罢了;

在MySQL中不是用的二叉搜索树,而是用的B树,先简单说一下B树也是一个树,只不过是跟二叉搜索树不一样罢了,不要以为是什么高大尚的数据结构;我们先简单把他理解成是多叉树!!

那么我们先想想为什么不用二叉搜索树呢?-->效率问题!!!


>我们先来划分一下立场,二叉搜索树搜索的数据是不是在内存中,内存中搜索是不是很快;

我们再来看看数据库查找数据是在哪里,回答我!!!!是不是在硬盘上进行IO啊,他是与硬件交互的,怎么跟内存中茶轴相比,a?对不对?

那二叉搜索树,可不可以在进行优化一下,毕竟二叉搜索树他在搜索他也就两个叉,我如果用多个叉来构建数据结构,是不是会更加的便捷;从树的形态上看,树的高度是不是就会变低,宽度变大,这意味这什么?这意味着我搜索数据可以少走弯路了,对不?

所以知道为什么不用二叉搜索树了吧,但是多叉树是一个十分宽泛的词, 对不,为什么要专门为二叉搜索树起名叫二叉搜索树的呢,对吧,那么我们多叉搜索树也要有个范!!!

-->就叫做b树,懂了吧!!!!

集体b树的实现可分为多维的,可以是3维,4维,意思就是一个节点分治是3个4个罢了;

所以,懂了吧!!!

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

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

相关文章

pyqt5报错:qt.qpa.plugin: Could not find the Qt platform plugin “xcb“(已解决)

我在使用pyqt库的时候报错: qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in \ "/mnt/private_disk/anaconda3/envs/aot-manip/lib/python3.8/site-packages/PyQt5/Qt5/plugins/platforms" even though it was found. This ap…

AI大模型全攻略:原理 · 部署 · Prompt · 场景应用

🚀 AI大模型全攻略:原理 部署 Prompt 场景应用 本文从基础原理到实践部署,再到 Prompt 工程与典型应用案例,全方位解析 AI 大模型的学习路径与使用方法,适合开发者、产品经理、技术爱好者等不同背景读者。 🧠 一、什么是 AI 大模型? AI 大模型(Large Language Mo…

2024年MathorCup数学建模D题量子计算在矿山设备配置及运营中的建模应用解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 D题 量子计算在矿山设备配置及运营中的建模应用 原题再现: 随着智能技术的发展,智慧矿山的概念越来越受到重视。越来越多的设备供应商正在向智慧矿山整体解决方案供应商转型,是否具备提供整体解…

Flink 流处理框架的核心特性

文章目录 事件时间支持Flink状态编程一、状态的类型1. 托管状态(Managed State)2. 原始状态(Raw State) 二、状态的管理和容错 Flink端到端的一致性1、检查点机制2、幂等3、事务 水位线窗口操作1、窗口类型2、窗口操作的时间语义 …

交换机(access端口)

任务&#xff1a;对access有更深入的理解 通过网盘分享的文件&#xff1a;交换机&#xff08;access&#xff09;.zip 链接: https://pan.baidu.com/s/1cMC6Na_1PLo6zOHazFplQQ?pwd23a5 提取码: 23a5 SW1 <Huawei>sys [Huawei]dis vlan The total number of vlans …

《鸟哥的Linux私房菜基础篇》---5 vim 程序编辑器

目录 一、vim程序编辑器的简介 二、命令模式快捷键&#xff08;默认模式&#xff09; 1、光标移动 2、编辑操作 3、搜索与替换 三、插入模式快捷键 四、底行模式快捷键&#xff08;按&#xff1a;进入&#xff09; 五、高级技巧 1、分屏操作 2、多文件编辑 3、可视化…

AI大白话(四):自然语言处理——AI是如何理解和生成人类语言的?

🌟引言: 专栏:《AI大白话》 AI大白话(一):5分钟了解AI到底是什么? AI大白话(二):机器学习——AI是怎么“学习“的? AI大白话(三):深度学习——AI的‘大脑‘是如何构建的? 大家好!欢迎回到"AI大白话"系列。前面我们聊了AI的基本概念、机器学习的原理…

扩展卡尔曼滤波

1.非线性系统的线性化 标准卡尔曼滤波 适用于线性化系统&#xff0c;扩展卡尔曼滤波 则扩展到了非线性系统&#xff0c;核心原理就是将非线性系统线性化&#xff0c;主要用的的知识点是 泰勒展开&#xff08;我另外一篇文章的链接&#xff09;&#xff0c;如下是泰勒展开的公式…

安装unsloth

我在llamafactory微调LLM&#xff0c;简单测了一些&#xff08;很不精准&#xff09;&#xff0c;加速方法中unsloth比flash_attention速度快了40%&#xff0c;显存占用减少15%&#xff1b; 创建虚拟环境&#xff1a;conda create -n env_name python3.10, 然后conda activate…

关于 51 单片机显示多个数码管时出现残影

残影现象&#xff1a; 出现残影代码&#xff1a; #include <REGX52.H> #include <INTRINS.H> void Delayxms(unsigned int x) //11.0592MHz {while(x){unsigned char i, j;_nop_();i 2;j 199; do{while (--j);} while (--i);x--;} } void DisplayDigitalNumb…

STM32学习笔记之常用外设接口(原理篇)

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

InnoDB 引擎核心知识点

InnoDB 引擎核心知识点 6.1 逻辑存储结构 表空间&#xff08;Tablespace&#xff09;&#xff1a;所有数据逻辑上存储在一个表空间中&#xff0c;物理上可能由多个文件组成。段&#xff08;Segment&#xff09;&#xff1a;分为数据段&#xff08;B树叶子节点&#xff09;、索引…

深度学习 Deep Learning 第9章 卷积网络 CNN

深度学习 Deep Learning 第9章 卷积网络 章节概述 本章深入探讨了卷积网络的原理、变体及其在深度学习中的应用。卷积网络通过卷积操作实现了参数共享和稀疏连接&#xff0c;显著提高了模型的效率和性能。本章首先介绍了卷积操作的基本形式及其在不同数据维度上的应用&#x…

基于MATLAB的涡旋光和高斯光叠加产生平顶光

强度叠加耦合成平顶光&#xff0c;不发生干涉 通过分别生成高斯光和涡旋光的强度分布&#xff0c;然后按合适的权重将它们叠加&#xff0c;得到近似平顶光&#xff08;flat‐top beam&#xff09;的效果。由于我们只是将强度相加&#xff08;而非复振幅叠加&#xff09;&#…

wordpress-网站百宝箱插件

含置顶,网页宠物, 哀悼, 禁止复制, 禁止查看源码, 弹幕, WP优化,媒体分类,预加载,定时发布,在线客服, 留言板, 手机客服, 网站背景, 公告, 跑马灯, 水印, 分享, 打赏, 海报图, 广告,数据库管理,图片加载特效。等综合功能插件

北斗导航 | 基于北斗三号短报文通信的北斗-YOLO融合系统原理,算法公式,系统流程框图,matlab代码,应用场景

以下是关于基于北斗三号短报文通信的北斗-YOLO融合系统的详细解析,包含原理、算法公式、系统流程、Matlab代码框架和应用场景。一、系统原理 北斗-YOLO融合系统结合了北斗三号短报文通信(双向通信能力)和YOLO目标检测算法,用于在无地面网络覆盖区域实现实时目标检测与数据传…

Vue 中的日期格式化实践:从原生 Date 到可视化展示!!!

&#x1f4c5; Vue 中的日期格式化实践&#xff1a;从原生 Date 到可视化展示 &#x1f680; 在数据可视化场景中&#xff0c;日期时间的格式化显示是一个高频需求。本文将以一个邀请码关系树组件为例&#xff0c;深入解析 Vue 中日期格式化的 核心方法、性能优化 和 最佳实践…

试试智能体工作流,自动化搞定运维故障排查

APO 1.5.0版本全新推出的智能体工作流功能&#xff0c;让运维经验不再零散&#xff01;只需将日常的运维操作和故障排查经验转化为标准化流程&#xff0c;就能一键复用&#xff0c;效率翻倍&#xff0c;从此告别重复劳动&#xff0c;把时间留给更有价值的创新工作。更贴心的是&…

LeetCode-215. 数组中的第K个最大元素

1、题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1…

分布式光伏防逆流管理:技术要点与实践解析

在国家“双碳”目标推动下&#xff0c;分布式光伏作为新能源体系的重要组成部分&#xff0c;正迎来快速发展。国家能源局近期发布的《关于做好新能源消纳工作保障新能源高质量发展的通知》明确提出&#xff0c;需加强网源协调与调节能力&#xff0c;优化新能源利用率。其中&…