Mysql-事务及索引

事务

概述

用来统一sql语句的操作
防止删了这种情况的发生
删了部门,但是删员工的出错了没删成
事务中的语句要么全部都运行成功,要么全部都不运行成功
且可以撤销事务的操作:叫事务回滚
在这里插入图片描述
在这里插入图片描述
介绍
在这里插入图片描述
正常不开启事务
就每一条语句都是一个事务

操作语句

在这里插入图片描述
案例

==事务==
-- 开启事务
start transaction ;

-- 删除部门
delete from tb_dept where id = 2;

-- 删除部门下的员工
delete from tb_emp where dept_id == 2;


-- 提交事务
commit;

-- 回滚事务
rollback ;


select * from tb_dept;
select * from tb_emp;

事务四大特性(面试)

在这里插入图片描述
最小单元

事务完成包含事务提交和事务回滚

索引

引入

针对数据量较大的表进行查询,如果不建立索引,查询一条语句的时间会变的非常长
在这里插入图片描述
可以看到,这个花了13s多
在这里插入图片描述
在sn字段建立完索引后,只花了6ms

select * from tb_sku where sn = '100000003145008'; -- 14s


select count(*) from tb_sku;


create index idx_sku_sn on tb_sku(sn);



-- 创建 : 为tb_emp表的name字段建立一个索引 .
create index idx_emp_name on tb_emp(name);

-- 查询 : 查询 tb_emp 表的索引信息 .
show index from tb_emp;

-- 删除: 删除 tb_emp 表中name字段的索引 .
drop index idx_emp_name on tb_emp;

介绍

可以认为是一本书的目录,帮助我们快速查找
加了主键和unique的字段会默认创建索引
在这里插入图片描述
建立索引
简单的来是介绍
建了个二叉搜索树(不同索引有不同结构!具体看下面的)
便于查找
而没建立索引的就是全表扫描
建立索引是一次性操作,建立后,添加数据也会加入对应的二叉搜索中,就是会更新对应的索引(当然这样进行数据更新的话,效率也会受影响)

优缺点

在这里插入图片描述

索引的结构

索引的结构
有很多种
二叉搜索树,按顺序存储的话存储会像图二那样,搜索效率还是低
红黑树可以解决这种问题
但是Mysql里面索引默认是用B+树来结构组织索引
因为红黑和二叉一个节点下只能存储两个节点,效率还是比较低
在这里插入图片描述

B+树

在这里插入图片描述

B+树上面的节点称为非叶子节点,最下面那行称为叶子节点(含数据的)
在这里插入图片描述
比如查29数据,内部是用二分查找的方式来进行搜索
比如这个29在6和38之间
走p1到下面那个节点
然后再比较
恰好29=29,走p3找到对应29的data

操作语法

在这里插入图片描述
索引是针对字段而言的(建树肯定是一种数据类型的多个数据呗)
在这里插入图片描述
!!且你主键和加了unique的字段会默认创建索引!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁拒绝摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值