MySQL索引篇(三)

2021-10-05 08:00:43 字數 1257 閱讀 7142

資料結構示例**:

btree是為了磁碟或其他儲存裝置設計的一種多叉平衡查詢樹。

btree和b+tree的區別

主鍵索引

這裡假設乙個表一共有三列,以col1為主鍵,上圖是乙個myisam表的主鍵索引示意圖;可以看出myisam的索引檔案僅僅儲存資料記錄位址。

輔助索引(次要索引)

在myisam中主鍵索引和輔助索引(secondary key)在結構上買有任何區別,只是主鍵索引要求key是唯一的,而輔助索引的key是可以重複的。如果在col2上建立乙個輔助索引,索引結構示意圖如下:

同樣也是一顆b+tree,data域儲存資料記錄的位址。因此,myisam中索引檢索的演算法為首先按照b+tree搜尋演算法搜尋索引;如果指定的key存在,則取出其data域的值,然後以data域的值為位址讀取相應資料記錄。

主鍵索引

innodb要求表必須有主鍵(myisam可以沒有),如果沒有顯示指定,則mysql系統會自動選擇乙個可以唯一標識資料記錄的列作為主鍵,如果不存在這種列則mysql自動為innodb表生成乙個隱含字段作為主鍵,型別為長整形。

上圖是innodb主鍵索引(同時也是資料檔案)的示意圖,可以看到葉子節點包含了完整的資料記錄。這種索引叫做聚集索引。因為innodb的資料檔案本身要按照主鍵聚集。

輔助索引(次要索引)

第二個與myisam索引的不同是innodb的輔助索引data域儲存相應記錄主鍵的值而不是位址。換句話說innodb的所有輔助索引都引用主鍵為data域。

聚集索引的實現方式使得按照主鍵搜尋十分高效,但是輔助索引需要檢索兩邊索引,首先檢索輔助索引獲得主鍵,然後用主鍵到主鍵索引中獲得資料記錄。

mysql筆記 索引篇

紅黑樹是二叉樹平衡之後的結果 b 樹,是紅黑樹本來乙個節點存乙個資料,改為乙個節點存多條資料,有幾條資料,度的值就是多少,度的大小和cpu一次讀取磁碟大小相匹配最好,度和實際儲存的資料個數為 15 16最好 b 樹,節點不儲存資料,葉子節點儲存資料,對比b 樹,節點儲存資料,這樣可以使度的值變的更大...

MySQL索引篇(一)

官方介紹索引是幫助mysql高效獲取資料的資料結構。更通俗的說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。一般來說索引本身也很大,不可能全部儲存在記憶體中,因此索引往往是儲存在磁碟上的檔案中的 可能儲存在單獨的索引檔案中,也可能和資料一起儲存在資料檔案中 我們通常所說的索引,包括聚集...

mysql 索引簡介篇

結構圖 其設計者規定了最下邊的那層,也就是存放記錄的那層為第0層,之後依次往上加。現在以查詢主鍵為20的記錄為例,採用二分法進行資料查詢 擴充套件,為什麼不用b樹,而採用b 樹呢?b 樹的葉子節點儲存的是完整的使用者記錄。大家有木有發現,上邊介紹的聚簇索引只能在搜尋條件是主鍵值時才能發揮作用,因為b...