什么是索引?为什么要使用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个罢了;

所以,懂了吧!!!

相关推荐
FYKJ_20101 小时前
springboot鲜花销售系统91056-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
承渊政道1 小时前
云电脑连接异地MySQL:星空组网配置、端口验证与登录排障
数据库·mysql·电脑·星空组网
冰暮流星1 小时前
mysql之索引结构
数据库·mysql
闲云自留地1 小时前
从结绳记事到 MySQL:数据库原理 + MySQL 基础一篇通
数据库·mysql
Shadow(⊙o⊙)3 小时前
MySQL复合查询
数据库·mysql
L·S·P8 小时前
25MB 管理 100+ 种数据库:开源轻量客户端 DBX 介绍与上手
数据库·mysql·开源·database·dbx
Shadow(⊙o⊙)11 小时前
MySQL内置函数
数据库·mysql
夜雪一千11 小时前
MySQL 常用 DEFAULT 默认值一览表
mysql
快乐的木子李12 小时前
mysql-26.7.0-linux26.7.0下载安装
数据库·mysql
知行产研14 小时前
易控智驾:毛利率跃升17.2个百分点,矿山无人驾驶从“规模换增长“迈入“盈利拐点“
数据库·mysql