ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【MySQL精炼宝库】深度解析索引 | 事务 [打印本页]

作者: 南飓风    时间: 2024-6-9 03:43
标题: 【MySQL精炼宝库】深度解析索引 | 事务
目录

一、索引
1.1 索引(index)概念:
1.2 索引的作用:
1.3 索引的缺点:
1.4 索引的利用场景:
1.5 索引的利用:
1.6 面试题:索引底层的数据结构(焦点内容):
1.7 索引列查询(主键 | 非主键)过程:
二、事务
2.1 事务的概念:
2.2 事务利用:
2.3 面试题:事务的基本特性:
2.4 MySQL事务的隔离性:


一、索引

1.1 索引(index)概念:

索引是一种特殊的文件,包罗着对数据表里全部纪录的引用指针。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。
注意:数组下标,目录,索引这三个是不同的术语,虽然它们的英文都是 index 但是表示的含义各不相同,希望友友们不要混淆。
本文章主要讲解MySQL中的索引及事务。
1.2 索引的作用:

   • 数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。
  • 索引所起的作用类似书籍目录,可用于快速定位、检索数据。
  • 索引对于进步数据库的性能有很大的资助。
  

1.3 索引的缺点:

主要体如今下面两点:
   • 索引本身要占据存储空间。
  • 索引能进步查询速度,但是可能会拖慢增编削的速度(对数据进行增编削都是要同步更新索引的)。
  1.4 索引的利用场景:

要考虑对数据库表的某列或某几列创建索引,须要考虑以下几点:
   • 数据量较大,且经常对这些列进行条件查询(索引是用在条件查询的时候)。
  • 该数据库表的插入利用,及对这些列的修改利用频率较低。
  • 索引会占用额外的磁盘空间。
  满足以上条件时,考虑对表中的这些字段创建索引,以进步查询效率。
相反,假如非条件查询列,或经常做插入、修改利用,或磁盘空间不敷时,不考虑创建索引。
1.5 索引的利用:

创建主键约束(PRIMARY KEY)、唯一约束(UNIQUE)、外键约束(FOREIGN KEY)时,会自动创建对应列的索引。
例如下图:只需关注画红框的这几个即可,至于如何检察表中的索引,后续马上讲到。

通过sql我们能够创建索引,检察索引,删除索引。 
 • 检察索引
sql脚本语法:
  1. show index from 表名;
复制代码
案例:检察学生表已有的索引
  1. show index from student;
复制代码

问题:为什么建立外键约束时,子表中的对应列(外键)为什么也要建立索引? 
解答:在父表中进行删除修改的时候要去子表查询(假如子表有对应外键那么要先修改子表).为了让子表查询的速度加快,以是这里加上了索引。
 • 创建索引
sql脚本语法:
  1. create index 索引名 on 表名(字段名);
复制代码
案例:创建班级表中,name字段的索引。
  1. create index idx_classes_name on classes(name);
复制代码

注意1:创建索引都是根据详细的列来创建的,以是后续查询的时候,也必须针对这一列进行条件查询才气够通过索引来提速。
注意2:索引的创建是一个伤害利用。假如表中的数据不多,创建索引啥的哪都无所谓。假如表本身很大,这个时候进行创建索引利用,就会引起大量的 CPU / 硬盘 IO 的斲丧,也是可能会把数据库给搞挂了的(年末奖也挂了




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4