Mysql索引优化

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

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



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


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

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


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


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



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

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章