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

news2025/3/28 5:55:02

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.coloradmin.cn/o/2321346.html

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

相关文章

【Linux】线程基础

🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.背景知识02.线程概念简单使用线程线程调度成本更低 01.背景知识 OS进行内存管理,不是以字节为单位的,而是以内存块为单位的,默认大小为4kb&…

「宇树科技」13家核心零部件供应商梳理!

2025年2月6日,摩根士丹利(Morgan Stanley)发布最新人形机器人研报:Humanoid 100: Mapping the Humanoid Robot Value Chain(人形机器人100:全球人形机器人产业链梳理)。 2025年2月20日&#xf…

Spring Boot 项目打包运行

打包成jar包&#xff0c;执行 java -jar 包名&#xff1b; 保证打出的jar包是独立可运行的包&#xff0c;需要xml中添加插件配置 <!-- SpringBoot应用打包插件--> <build><plugins><plugin><groupId>org.springframework.boot</groupId&…

数据结构八股

线性数据结构 数组:数组的内存空间是连续的&#xff0c;随机访问的时间复杂度是01&#xff0c;适用于需要按索引访问元素的场景&#xff0c;但是插入和删除元素较慢&#xff0c;时间复杂度是On链表:链表是由节点组成&#xff0c;节点之间是分散存储的&#xff0c;内存不连续&a…

7.2 控件和组件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 C#工具箱位于编辑窗口的左侧&#xff0c;它默认内置了大量的控件和组件。控件一般派生于System.Windows.Forms.Control类&#xff0c;显…

transform

http://zhihu.com/question/445556653/answer/3254012065 西科技的文章 视频讲解 小白也能听懂的 transformer模型原理详解 self- attention 多头注意力机制 encoder decoder 机器翻译_哔哩哔哩_bilibili

思库拉水厂开业庆典千人大会回顾

近日,思库拉离子水厂在广州隆重举办了开业盛典,现场汇聚了逾千名嘉宾。此次盛会不仅是对思库拉离子水厂正式投产的庆祝,更是对思库拉品牌未来蓝图的一次展示。 现场氛围热烈,洋溢着浓厚的喜庆气息。参与者来自五湖四海,既有思库拉的忠实拥趸,也有对思库拉产品充满兴趣的潜在消费…

JAVA学习*Object类

Object类 Object类是所有类的父类 类中有一些方法&#xff08;都需要掌握&#xff09; toString()方法 在学习类的对象的时候有介绍过了&#xff0c;当我们重新给此方法就会打印类与对象的信息 equals()方法 在Java中的比较&#xff0c; 如果左右两侧是基本类型变量&#…

基于python脚本实现的打砖块小游戏

目录 1. 打砖块游戏 2. 初始化 Pygame 和设置屏幕 3. 定义游戏对象 3.1 定义玩家操作的paddle 3.2 定义球&#xff08;Ball&#xff09; 3.3 砖块&#xff08;Bricks&#xff09; 4. 游戏主循环 4.1 事件处理 4.2 板子移动 4.3 球移动和碰撞检测 4.4 绘制游戏对象 …

地理信息系统(GIS)在智慧城市中的40个应用场景案例

在智慧城市发展进程中&#xff0c;地理信息系统&#xff08;GIS&#xff09;作为关键技术之一&#xff0c;正扮演着不可或缺的角色&#xff0c;堪称智慧城市的神经中枢。通过空间数据分析优化城市管理&#xff0c;GIS技术为智慧城市的构建提供了强大的支持。 本文分享了GIS在智…

XSS Game(DOM型) 靶场 通关

目录 靶场网址 Ma Spaghet! 分析 解题 Jefff 分析 解题 方法一 方法二 Ugandan Knuckles 分析 解题 Ricardo Milos 分析 解题 Ah Thats Hawt 分析 解题 方法一 方法二 Ligma 分析 解题 ​ Mafia 分析 解题 方法一&#xff1a;构造函数 方法二&#xf…

【大模型基础_毛玉仁】3.5 Prompt相关应用

目录 3.5 相关应用3.5.1 基于大语言模型的Agent3.5.2 数据合成3.5.3 Text-to-SQL3.5.4 GPTs 3.5 相关应用 Prompt工程应用广泛&#xff0c;能提升大语言模型处理基础及复杂任务的能力&#xff0c;在构建Agent、数据合成、Text-to-SQL转换和设计个性化GPTs等方面不可或缺。 . …

deepseek搭建本地私有知识库dify安装介绍docker compose图文教程

按照官方介绍&#xff0c;打开教程安装。下载源码&#xff0c; # 假设当前最新版本为 0.15.3 git clone https://github.com/langgenius/dify.git --branch 0.15.3 进入docker目录&#xff0c; cd dify/docker 网络科学的直接执行命令就可以了。 docker compose up -d 镜…

右击没有Word、PPT、Excel功能

右击没有Word、PPT、Excel功能 导航 文章目录 右击没有Word、PPT、Excel功能导航一、问题描述二、事情经过三、解决方案其他思路分享 一、问题描述 ​ 在安装并激活了office之后&#xff0c;业务反馈右击没有出现新建Word功能&#xff0c;仅有Word文档 二、事情经过 ​ 按道…

DeepSeek R1 本地部署指南 (6) - Windows 本地部署使用 GPU 运行

DeepSeek R1 本地部署指南 (1) - Windows 本地部署 上一篇&#xff0c;安装好 Windows 本地步骤后&#xff0c;如果发现在任务管理器中 GPU 显示 0%。 1.在命令行中输入&#xff1a; ollama ps 显示&#xff1a; PROCESSOR CPU 2.安装 CUDA Toolkit CUDA Toolkit Downloads htt…

婚姻的解构与重构 | 一场关于选择与责任的探索

注&#xff1a;本文为 “婚姻的解构与重构” 相关文章合辑。 未整理。 明明渴望爱情 为何反感催婚&#xff1f; 原创 常 晋 人民日报评论 2024 年 04 月 22 日 12:29 北京 没有催促指责&#xff0c;也毫无批评之意。面对单身、失业的 30 岁女儿&#xff0c;只是鼓励孩子&…

jangow靶机攻略

配置网卡 VMware需要配置&#xff0c;不配置扫不到ip,VirtualBox正常打开ip会直接显示出来 网卡配置都改成NAT 打开虚拟机&#xff0c;第一个框选第二行&#xff0c;回车 选第二个&#xff0c;按e键 进入下一个框后&#xff0c;将ro 后面的修改为 rw signin init/bin/bash 按…

自动化测试框架维护成本高怎么办

自动化测试框架维护成本高&#xff0c;可以通过优化测试用例设计、引入持续集成&#xff08;CI&#xff09;策略、强化代码规范和审查机制、建立明确的维护计划、定期进行技术债务清理等方式来降低成本。 其中&#xff0c;优化测试用例设计尤其关键&#xff0c;它不仅能提高测试…

日事清在敏捷开发中的实战应用:SCRUM框架下可视化项目管理+高效沟通机制驱动灵活迭代

一、行业背景 在快速发展的互联网行业中&#xff0c;软件开发模式经历了显著的演变。传统的瀑布式开发模式&#xff0c;以其线性和阶段性的特点&#xff0c;曾长期占据主导地位。然而&#xff0c;随着市场对软件迭代速度和灵活性的要求日益提高&#xff0c;敏捷开发模式应运而…

Buildroot 增加系统启动项并解决后台无法获取输入(串口)

Buildroot 增加自启动项 概述增加模块源码结构编写测试程序编译测试增加系统自启动一个问题解决方案&#xff1a;显式指定输入设备 其他/etc/init.d 目录下的 SXXxxx 文件作用解析‌ 概述 Buildroot 是一款轻量级、高度可定制的开源工具集&#xff0c;专为嵌入式系统打造。它通…