Mysql索引優化

Mysql中爲什麼要加索引,有什麼好處呢?下面我們看一個例子:

我們對一個有6百多萬數據的沒有主鍵索引(本來id是主鍵,爲了做測試,我將它刪了)的表進行分析:



我們來根據id查詢一條數據(這裏用時2秒多):


下一步我們來分析一下這條SQL語句(explain 和desc都可以來分析):

根據信息我們可以看出,它採用的是全表掃描的方式。掃描了6百多萬行。下面我們就給id加上索引,再進行對比一下:


可以看出查詢的同樣的數據用時1秒都沒有:


通過下面的分析這條SQL我們可以看出,他在查數據時用了索引:



爲什麼加了索引會導致查詢的速度變得這麼快?因爲在查詢數據時,如果不用索引,它直接就是全表掃描,表裏面的所有數據都要掃描;加了索引的話,他會創建一個索引的二叉樹,然後根據在二叉樹上查找一個相應的節點,這樣速度就會變了很快。二叉樹的每一個節點上保留了磁盤磁道的信息,然後直接定位到該位置。這樣的話索引文件就不能直接拷貝到另外的一個地方直接使用,因爲磁盤磁道是不一樣的。

下面是MYSQL數據文件和索引文件的位置:



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