通過hash演算法,能快速檢索資料
資料碰撞問題用鏈位址法
無法進行範圍搜尋
解決雜湊索引無法範圍搜尋的問題
極端情況下會退化成線性鍊錶,自增主鍵必然會導致極端情況
會自動調整樹形態,使其保持平衡,調整會消耗效能
無法完全解決二叉查詢樹的問題
絕對平衡的二叉樹,更耗效能
根本解決了紅黑數的問題
由於乙個節點只儲存乙個資料,在磁碟io上消耗過多時間
由於從磁碟讀取1b資料和1kb資料的時間基本一致
因此可以在乙個節點上儲存多個資料,這就是b樹
即便如何,每個節點上儲存的資料還是有限的
b樹節點上儲存的是資料,每個節點存不了很多資料
而b+樹節點上儲存的是索引,葉子節點上存所有的資料
相對b樹,b+樹的高度降低了,減少了磁碟io
mysql的索引用的就是b+樹
myisam
innodb
不支援事務
支援事務
表鎖行級鎖
資料和索引分開
(非聚集索引)
資料和索引放一起
(聚集索引)
索引樹的葉子節點儲存資料的實體地址
只在主鍵索引樹的葉子節點儲存具體資料,其他索引樹的葉子節點儲存主鍵。
當使用其他索引時,先在其他索引樹中找到主鍵,再去主鍵索引樹中找到具體資料。這樣做是為了節省空間,避免每個索引樹都儲存資料(聚集索引),所以效能比myisam差點
MySQL索引底層(二) 索引底層原理
聚集索引 上次我們講到了主鍵的索引,我們可以執行一下sql語句 explain select from t user where a 1 我們可以看到這條sql走的是主鍵的索引,而在mysql的innodb中,主鍵索引則是聚集索引,資料的物理順序與鍵值的邏輯 索引 順序相同,其實就是說主鍵索引跟其他...
mysql索引底層原理
索引的本質 資料結構 組織資料的方式 innodb沒有主鍵索引時,判斷是否含有唯一索引,沒有唯一就生成乙個隱藏的row id作為主鍵 在資料較少時是以鍊錶的形式儲存資料的,當資料過多,長鍊表會影響資料的查詢,此時會將資料通過頁的形式進行儲存,預設一頁儲存16kb資料,每頁會與每頁之間通過指標進行連線...
mysql底層 MySQL索引底層實現原理
索引的本質 mysql官方對索引的定義為 索引 index 是幫助mysql高效獲取資料的資料結構。提取句子主幹,就可以得到索引的本質 索引是資料結構。我們知道,資料庫查詢是資料庫的最主要功能之一。我們都希望查詢資料的速度能盡可能的快,因此資料庫系統的設計者會從查詢演算法的角度進行優化。最基本的查詢...