mysql索引做什么?

數據庫中的索引類似大學圖書館建書目索引,可以提高數據檢索的效率,降低數據庫的io成本。mysql在300萬條記錄左右性能便會開始逐漸下降,所以當遇到大數據量時建立索引是非常有必要的。

mysql索引做什么?

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,時間提升是巨大的。

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享