紅黑樹是二叉樹平衡之後的結果;
b-樹, 是紅黑樹本來乙個節點存乙個資料,改為乙個節點存多條資料,
有幾條資料,度的值就是多少,度的大小和cpu一次讀取磁碟大小相匹配最好,度和實際儲存的資料個數為<15/16最好
b+樹,節點不儲存資料,葉子節點儲存資料,對比b-樹,節點儲存資料,這樣可以使度的值變的更大
圖示:b-樹
b+樹
mysql索引(mysql引擎都是表級引擎)
myisam引擎
主鍵索引儲存的是行記錄的檔案指標,使用b+樹(通過檔案指標再去找索引,屬於非聚集索引)
普通的索引同主鍵索引
innodb引擎
主鍵:資料和索引都儲存到葉子節點上去(找到葉子,就找到了資料,屬於聚集索引--葉子節點包含了完整的資料記錄)
表資料檔案本身就是按照b+樹排列的;
inno必須要有主鍵;推薦使用整型的自增主鍵,便於節點儲存比較,不會出現插入,樹**,磁碟碎片;節點的比較是比較ascii碼;
普通索引葉子節點使用的是主鍵值;節省空間,降低維護索引的麻煩,資料要插入到主鍵索引樹和普通索引上,會引起資料一致性問題;
innodb支援事務,支援行鎖,使用比較多
聯合索引:b+樹
多個單列索引在多條件查詢時只會生效第乙個索引!所以多條件聯合查詢時最好建聯合索引!
聯合索引比對每個列分別建索引更有優勢,因為索引建立得越多就越佔磁碟空間,在更新資料的時候速度會更慢。另外建立多列索引時,順序也是需要注意的,應該將嚴格的索引放在前面,這樣篩選的力度會更大,效率更高。
建立(a,b,c)聯合索引時,相當於建立了(a)單列索引,(a,b)聯合索引以及(a,b,c)聯合索引
聯合索引是參考
myisam
myd 字尾的是資料檔案
myi 索引檔案字尾
索引的建立和使用:
索引盡量建立在不重複的資料上
MySQL索引篇(一)
官方介紹索引是幫助mysql高效獲取資料的資料結構。更通俗的說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。一般來說索引本身也很大,不可能全部儲存在記憶體中,因此索引往往是儲存在磁碟上的檔案中的 可能儲存在單獨的索引檔案中,也可能和資料一起儲存在資料檔案中 我們通常所說的索引,包括聚集...
MySQL索引篇(三)
資料結構示例 btree是為了磁碟或其他儲存裝置設計的一種多叉平衡查詢樹。btree和b tree的區別 主鍵索引 這裡假設乙個表一共有三列,以col1為主鍵,上圖是乙個myisam表的主鍵索引示意圖 可以看出myisam的索引檔案僅僅儲存資料記錄位址。輔助索引 次要索引 在myisam中主鍵索引和...
mysql 索引簡介篇
結構圖 其設計者規定了最下邊的那層,也就是存放記錄的那層為第0層,之後依次往上加。現在以查詢主鍵為20的記錄為例,採用二分法進行資料查詢 擴充套件,為什麼不用b樹,而採用b 樹呢?b 樹的葉子節點儲存的是完整的使用者記錄。大家有木有發現,上邊介紹的聚簇索引只能在搜尋條件是主鍵值時才能發揮作用,因為b...