資料庫中的索引類似大學圖書館建書目索引,可以提高資料檢索的效率,降低資料庫的IO成本。 MySQL在300萬筆記錄左右效能便會開始逐漸下降,所以當遇到大數據量時建立索引是非常必要的。
MySQL官方對索引的定義為:索引是幫助MySQL有效率地取得資料的資料結構。
我們可以簡單理解為:快速找出排好序的一種資料結構。
Mysql索引主要有兩種結構:B Tree索引和Hash索引。
我們平常所說的索引,如果沒有特別指明,一般都是指B樹結構組織的索引(B Tree索引)。索引如上圖所示。
最外層淺藍色磁碟區塊1裡面有資料17、35(深藍色)和指標P1、P2、P3(黃色)。 P1指標表示小於17的磁碟區塊,P2是在17-35之間,P3指向大於35的磁碟區塊。真實數據存在於子葉節點也就是最底下的一層3、5、9、10、13......非葉子節點不儲存真實的數據,只儲存指引搜尋方向的數據項,如17、35 。
查找過程:例如搜尋28資料項,先載入磁碟區塊1到記憶體中,發生一次I/O,用二分查找確定在P2指標。接著發現28在26和30之間,透過P2指標的位址載入磁碟區塊3到內存,發生第二次I/O。用同樣的方式找到磁碟區塊8,發生第三次I/O。
真實的情況是,上面3層的B Tree可以表示上百萬的數據,上百萬的數據只發生了三次I/O而不是上百萬次I/O,時間提升是巨大的。
以上是mysql索引做什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!