目录

一.索引

1.什么是索引

2.索引的作用

3.索引的使用场景

4.索引的简单使用

(1)查看索引

(2)创建索引

(3)删除索引

二.事务

1.什么是事务以及为什么使用事务

(1)事务的概念

(2)使用事务的原因

2.如何开启事务

(1)开启事务的三部曲

(2)开启事务的例子

3.事务的四大特性


一.索引

1.什么是索引

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。

2.索引的作用

  • 可以快速定位,检索数据
  • 可以提高数据库的性能,如果查询数据的时间太长,可以通过创建索引提高查询效率

3.索引的使用场景

如果需要对数据库中的某列或者某几列想要创建索引,需要考虑以下几点(如果不考虑以下几点,可能提高不了查询的效率):

  • 数据量较大,经常对这些数据进行条件查询。
  • 对创建索引的列修改插入频率较低。
  • 索引会占用磁盘空间,在创建索引的时候需要考虑磁盘空间是否充足。
  • 根据where条件查询来创建合适的索引。
  • 索引也不是创建的越多越好,数据量大的时候更新索引也消耗时间

注意:对于有些查询结果使用不到索引如:给name创建一个索引,当name is null 或者

name  like % 某%,就使用不到索引。

4.索引的简单使用

对于一些约束,会自动创建对应列的索引,如主键约束,唯一键约束,外键约束。

(1)查看索引

语法:

show index from 表名;

(2)创建索引

语法:

create index 索引名 on 表名(字段名);

(3)删除索引

语法:

drop index 索引名 on 表名;

二.事务

1.什么是事务以及为什么使用事务

(1)事务的概念

事务(具有原子性)指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。在不同的环境中,都可以有事务。对应在数据库中,就是数据库事务。

(2)使用事务的原因

在某些场景下,如果没有事务就会出现很大的问题。例如银行的转账问题。

2.如何开启事务

(1)开启事务的三部曲

  1. 开启事务:start transaction;
  2. 执行多条SQL语句
  3. 回滚或提交 rollback(全部失败)/commit(全部成功)。

(2)开启事务的例子

初始化的账户

drop table if exists accout;
create table accout(
id int primary key auto_increment,
name varchar(20) comment '账户名称',
money decimal(11,2) comment '金额'
);
insert into accout(name, money) values
('张三', 3000),
('李四', 3000);

开启事务后的转钱操作

start transaction;
-- 张三账户减少2000
update accout set money=money-2000 where name = '张三';
-- 李四账户增加2000
update accout set money=money+2000 where name = '李四';
-- commit执行完成后转账就会成功,数据库中的数据就会得到修改
commit;

使用commit之前

使用commit之后

开启事务后,如果没有执行到commit,那么数据库中的数据就没有得到修改,虽然在当前数据库中显示钱已经发生了变化,但是再打开另一个数据库端口重新进入就会发现没有变化,这就是开启事务的好处,没有执行成功就不会修改数据库中的数据。

3.事务的四大特性

  1. 原子性:对于一组操作(主要为更新),要么全部成功,要么全部失败。
  2. 一致性:一个事务里面,多次查询到的结果都是一致的。
  3. 隔离性:不同事务,查询/修改的数据是互相隔离的。一个事务没有提交/回滚之前,修改数据只有自己可以看到。
  4. 持久性:事务提交后,数据会持久化到硬盘中。

初窥MySQL的索引与事务相关推荐

  1. 解读mysql的索引和事务的正确姿势

    一.索引是做什么的? 很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引. 大多数MySQL索引(PRIMARY KEY.UNIQUE.INDEX和FULLTEXT)在B树中存储 ...

  2. 解读mysql的索引和事务的正确姿势 1

    一.索引是做什么的? 很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引. 大多数MySQL索引(PRIMARY KEY.UNIQUE.INDEX和FULLTEXT)在B树中存储 ...

  3. 【剧前爆米花--爪哇岛寻宝】MySQL中索引和事务

    作者:困了电视剧 专栏:<MySQL数据库> 文章分布:这是一篇关于Java中异常类的文章,在本篇文章中详细讲解了异常的使用逻辑和底层的执行过程,如有疏漏,欢迎大佬指正! 目录 索引 用法 ...

  4. MySQL(4) 索引、事务与存储引擎

    文章目录 一.MySQL 索引 1.1 索引的概念 1.2 索引的作用及缺点 1.2.1 优点 1.2.2 缺点 1.3 创建索引的原则依据 1.4 索引的分类和创建 1.4.1 普通索引 ●直接创建 ...

  5. MySQL学习笔记 04、MySQL进阶(索引、事务、锁)

    文章目录 前言 一.MySQL的目录结构 1.1.认识目录文件 1.2.配置文件设置 windows平台下设置 linux环境下设置 二.MySQL的系统架构 2.1.MySQL系统的逻辑架构: 2. ...

  6. MySQL日志/索引/锁/事务特性的理解

    文章目录 前言 关于日志 Redo Undo 关于索引 分页查询的优化方式&原理 子查询优化 根据某个字段排序后分页 先选出主键,再通过主键查询 位置计算优化 索引对关联查询的影响 关于锁 乐 ...

  7. MySQL的索引和事务

    目录 索引 索引的概念 索引的实现方式 为什么需要索引 创建索引 删除索引 查看索引 索引背后的数据结构 B-树 聚簇索引 非聚簇索引 B+树 Mysql的页的概念 索引失效的情况 事务 事务的引入 ...

  8. Mysql:索引、事务

    参考: 狂神说Mysql视频 高性能Mysql 文章目录 1.索引简介 2.EXPLAIN关键字 一百万条数据测试 3. 索引原理 B-Tree **为什么说B+树比B-树更适合实际应用中操作系统的文 ...

  9. MySQL(三)——函数、事务(ACID)、索引、权限管理和备份、数据库三大范式

    文章目录 1. MySQL函数 1.1 常用函数 1.2 聚合函数(常用) 1.3 数据库级别的MD5加密 2. 事务 2.1 简述 2.2 事务原则 2.3 隔离所导致的一些问题 2.4 执行事务 ...

最新文章

  1. 特别的需要名言警句提醒一下自己
  2. 深度学习caffe的代码怎么读?
  3. 昂贵的聘礼(poj 1062)
  4. Js判断下拉框是否为空值
  5. 安卓rpg绅士游戏资源_海贼无双3(动作游戏)——电脑安卓单机游戏下载资源分享...
  6. cacti linux cpu datasource,Cacti 0.8.8b 硬盘、网络流量、cpu、内存告警配置
  7. ftp ---- vsftpd安装卸载
  8. Kneron用“重组”方案精简深度学习算法,芯片产品明年开售
  9. XBRL 可扩展商业报告语言
  10. 从△走进OO,走进策略模式
  11. AHK生成随机但不重复的数字
  12. python程序设计基础与应用课后答案_智慧职教Python程序设计基础作业课后答案
  13. 【编译原理系列】语法分析与上下文无关文法
  14. GitBash和GitGui右键失效解决方法
  15. android nfc P2P模式
  16. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)...
  17. mysql未开启binlog如何恢复数据_MySQL5.7开启binlog日志,及数据恢复简单示例
  18. 怎么创建dllwenjian_怎样新建一个*.dll的文件?
  19. Java基于JSP的论坛交流系统
  20. centos :不在 sudoers 文件中。此事将被报告

热门文章

  1. Java_笛卡尔积计算
  2. flink的基础介绍
  3. 56 Marvin: 一个支持GPU加速、且不依赖其他库(除cuda和cudnn)的轻量化多维深度学习(deep learning)框架介绍...
  4. 学习Linux(centos7)准备的工具
  5. Odoo与浪潮合资研发PS Cloud之如何处理序列号
  6. 激光SLAM 前端数据预处理--剔除坏点方法总结
  7. C++ 编译宏的一些符号
  8. [转载]HC-SR501 人体红外感应模块
  9. 视频广告场景识别方案总结
  10. 央企招聘:国家水利部直属单位2023公开招聘