当前位置: 首页 > article >正文

什么是索引?为什么要使用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.kler.cn/a/599431.html

相关文章:

  • 股指期权最后交易日是哪一天?
  • Flask(一)概述与快速入门
  • 蓝桥杯备考:学会使用方向向量
  • Pyserial库使用
  • HRP方法全文总结与模型流程解析
  • Flutter 输入组件 Radio 详解
  • Blender4.4正式发布:核心更新与渲染101云渲染平台应用指南
  • TCP/IP协议的三次握手和四次挥手
  • 《大语言模型赋能证券业开发安全:海云安技术方案在上交所专刊发表》
  • spring boot项目中Lombok注解失效问题
  • 初阶数据结构(C语言实现)——6.2选择排序详解(思路图解+代码实现)
  • 机器学习之回归
  • CES Asia 2025:科技企业出海的领航灯塔
  • Go常见问题与回答(上)
  • 大数据平台各组件功能与协同作用全解析
  • 【AndroidRTC-11】如何理解webrtc的Source、TrackSink
  • 100天精通Python(爬虫篇)——第122天:基于selenium接管已启动的浏览器(反反爬策略)
  • python如何创建虚拟环境
  • 科技赋能,高端气膜料仓重塑储存新标准—轻空间
  • 计算机二级:基础操作题