:MySQL索引和事务
Posted 我擦我擦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:MySQL索引和事务相关的知识,希望对你有一定的参考价值。
文章目录
一:索引
(1)索引基本概念
索引:索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列数据创建索引,并指定索引类型,各类索引有各自的数据结构实现
- 拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字
索引的主要作用有
- 索引可以提高查询数据的效率
- 索引可以提高数据库整体性能
索引的缺点有
- 需要额外的空间来存储索引
- 提高了查询速率,但同时降低了增加、删除、修改时的效率,因为更新数据时还需要更新索引
(2)使用场景
使用场景:要考虑对数据库表的某列或某几列创建索引,需要考虑以下几点
- 数据量较大,且经常对这些列进行条件查询
- 该数据库表的插入操作,以及对这些列的修高操作频率较低
- 索引会占用额外存储空间
(3)mysql索引使用
- 注意: 建立
PRIMARY KEY
、UNIQUE
、FOREIGN KEY
约束时,会自动创建对应列的索引
A:查看索引
语法:格式如下
show index from 表名
例子:
show index from student
B:创建索引
语法:对于非PRIMARY KEY
、UNIQUE
、FOREIGN KEY
约束可以创建普通索引
create index 索引名 on 表名(列名)
例子:
create index index_Ssex on student(Ssex)
C:删除索引
语法:格式如下
drop index 索引名 on 表名
例子:
drop index index_Ssex on student;
(4)MySQL索引背后的数据结构
- MySQL索引使用B+树完成
A:B树
B树(B-tree):是一种平衡的多路查找树,结点最大的孩子数目称之为B树的阶(order)。和二叉排序树一样,每个结点把查找范围分为了两个区间,小于它的在左侧,大于它的在右侧
如下是一个5阶B树
B树操作
①:插入
B树插入过程中,最重要的一个操作是拆分
②:查找
其查找过程也和二叉排序树基本一致,这里就不再叙述了。
如下是在B树中查找关键字“44”的过程
③:删除
当要删除的结点的关键字落在终端结点上时,且终端结点的关键字个数大于2可以直接删除
当要删除的结点的关键字是非根非叶子结点的关键字时,和二叉排序树一样,向右分支找寻节点中最小的关键字或者向左分支找寻结点中最大的关键字进行取代(注意仍然需要满足关键字个数的要求)
如果删除后关键字还不满足条件,可以进行借位操作
如果无法借位,那就直接删除然后和左或右进行合并操作
B:B+树
B+树:B+树是为应对文件系统所需而产生的B树的变形。在B树基础上,B+树为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引,B+树总是到叶子结点才命中
- B树把N-1个值分成了N个区间,B+树则把N个值分成了N个区间
- B树中元素不会重复出现,B+树中元素可能重复出现。其中父元素的值会在子元素中以最大值或最小值出现
- B+树会把所有叶子节点以链表形式首尾相连。因此B+树便于范围查询
二:事务
(1)基本概念
以上是关于:MySQL索引和事务的主要内容,如果未能解决你的问题,请参考以下文章