Mysql索引优化

Mysql中为什么要加索引,有什么好处呢?下面我们看一个例子:

我们对一个有6百多万数据的没有主键索引(本来id是主键,为了做测试,我将它删了)的表进行分析:


Mysql索引优化_第1张图片


我们来根据id查询一条数据(这里用时2秒多):

Mysql索引优化_第2张图片

下一步我们来分析一下这条SQL语句(explain 和desc都可以来分析):

Mysql索引优化_第3张图片

根据信息我们可以看出,它采用的是全表扫描的方式。扫描了6百多万行。下面我们就给id加上索引,再进行对比一下:

Mysql索引优化_第4张图片


可以看出查询的同样的数据用时1秒都没有:

Mysql索引优化_第5张图片

通过下面的分析这条SQL我们可以看出,他在查数据时用了索引:

Mysql索引优化_第6张图片


为什么加了索引会导致查询的速度变得这么快?因为在查询数据时,如果不用索引,它直接就是全表扫描,表里面的所有数据都要扫描;加了索引的话,他会创建一个索引的二叉树,然后根据在二叉树上查找一个相应的节点,这样速度就会变了很快。二叉树的每一个节点上保留了磁盘磁道的信息,然后直接定位到该位置。这样的话索引文件就不能直接拷贝到另外的一个地方直接使用,因为磁盘磁道是不一样的。

下面是MYSQL数据文件和索引文件的位置:

Mysql索引优化_第7张图片


你可能感兴趣的:(Mysql)