当前位置:   article > 正文

【MySQL精炼宝库】深度解析索引 | 事务

【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脚本语法:

show index from 表名;

案例:查看学生表已有的索引

show index from student;

问题:为什么建立外键约束时,子表中的对应列(外键)为什么也要建立索引? 

解答:在父表中进行删除修改的时候要去子表查询(如果子表有对应外键那么要先修改子表).为了让子表查询的速度加快,所以这里加上了索引。

 • 创建索引

sql脚本语法:

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

案例:创建班级表中,name字段的索引。

create index idx_classes_name on classes(name);

注意1:创建索引都是根据具体的列来创建的,所以后续查询的时候,也必须针对这一列进行条件查询才能够通过索引来提速。

注意2:索引的创建是一个危险操作。如果表中的数据不多,创建索引啥的哪都无所谓。如果表本身很大,这个时候进行创建索引操作,就会引起大量的 CPU / 硬盘 IO 的消耗,也是可能会把数据库给搞挂了的(年终奖也挂了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/540600
推荐阅读
相关标签