目录
一、索引
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脚本语法:
案例:检察学生表已有的索引
问题:为什么建立外键约束时,子表中的对应列(外键)为什么也要建立索引?
解答:在父表中进行删除修改的时候要去子表查询(假如子表有对应外键那么要先修改子表).为了让子表查询的速度加快,以是这里加上了索引。
• 创建索引
sql脚本语法:
- create index 索引名 on 表名(字段名);
复制代码 案例:创建班级表中,name字段的索引。
- create index idx_classes_name on classes(name);
复制代码
注意1:创建索引都是根据详细的列来创建的,以是后续查询的时候,也必须针对这一列进行条件查询才气够通过索引来提速。
注意2:索引的创建是一个伤害利用。假如表中的数据不多,创建索引啥的哪都无所谓。假如表本身很大,这个时候进行创建索引利用,就会引起大量的 CPU / 硬盘 IO 的斲丧,也是可能会把数据库给搞挂了的(年末奖也挂了 |