mysql随堂视频-索引

索引介绍及种类mysql视频 mysql索引

现实生活中使用目录来完成快速的查找。同理如果我们想快速的查找表里面的内容的话,我们就要使用类似于目录的东西,这个东西就称之为索引。

注:如果我们要对SQL进行优化,大部分都给别表添加索引。

索引工作过程:

mysql随堂视频-索引

这是一张员工表。现在我想查询名字是张三的这个人的信息:

select * from aa where  name=’张三’;

在此表中找到张三需要几次查询?查找第一次的就找到了张三了。

找到张三之后还找吗?下面还是要继续找的,因为难免下面还有叫张三的人。要把整张表全部找一遍。

这样的找法我们称之为全表扫描。假如一张表有100万行,找的时间就比较久。

mysql随堂视频-索引

在这100w行数据里查找需要80毫秒,需要进行全表扫描。

为了快速查找,我可创建索引出来。

mysql随堂视频-索引

这里为name这列创建了索引,那么在索引文件里包含name列里所有的值,索引文件里的每个值都有一个指针,指向了数据文件里相对应的位置。然后对索引文件里的内容会根据某种算法来进行排序。

当我依据某个索引查找数据的时候,那么首先到索引里面查找,比如查找名字是张三的。

因为索引里已经排过序了,所以可以快速的在索引里查找到name,然后根据name=张三相对应的指针,就可以找到张三所有的数据。

因为在索引里查找到张三,那么索引后面就不会在出现张三了。

注:你使用哪列来做索引,那么这列所有的内容都是包保存在索引文件的。

mysql随堂视频-索引

从这里可以看到有索引和没有索引的差距是100倍。

很多时候我们在测试索引是否正常工作(优化)的时候,更过使用的explain命令:

explain的用法:(explain也成为分析器)

explain select语句;

explain后面的语句并没有真正的执行,只是给我们分析了一下。

mysql随堂视频-索引

上图是使用索引的情况。

mysql随堂视频-索引

这条命令暂且删除索引:

mysql随堂视频-索引

上图type为all,就说明进行的是全文索引。涉及到了100w行。

明显能看出来使用索引比不使用索引速度要快了很多。因为在索引中能够快速的定位。

为什么能够在索引中快速的定位?

当我们把某列内容配置成索引的话,那么这列会拿到索引文件里面:

mysql随堂视频-索引

从上图可以看到索引文件比数据文件还要大。我们以id作为索引文件。

所有的id列的数据也保存一份在索引文件,并且进行排序:

在mysql默认使用的是平衡二叉树(BTREE)

mysql随堂视频-索引

对于二叉树来说,左树总是小于右树的。

平衡二叉树:所谓的平衡二叉树指的是 左右两棵树不能相差两层。

假如一个索引里的数据已经平衡了,比如:

mysql随堂视频-索引

假如我现在插入两个数据,分别10和11

mysql随堂视频-索引

此时二叉树就变成这个样子了,现在还是平衡二叉树?所以此时索引会旋转这棵树。

索引有两个主要弊端:

1. 所占用的空间比较大

2. 当我们插入数据的时候,需要对索引做相应的更改,导致插入数据的速度比较慢。

所以建议:当大量更改数据的时候,先删除索引,等数据添加完了再创建索引。

视频下载地址:http://pan.baidu.com/share/link?shareid=484659&uk=3742764079


相关新闻

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

                                                                                                                                    RHCE9学习指南连载,点击阅读