資料結構示例**:
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...