MySQL 索引型別與資料結構

2021-09-29 10:08:41 字數 997 閱讀 2108

mysql索引型別與資料結構

①什麼是索引

索引是供伺服器快速在表中查詢一行資料的資料庫結構,預設是 b+tree 結構

索引適合在 高基數列 ( 不相同的值多的列 ), 或者資料量很大的列上新增

索引列不能經常變換(增刪改) , 維護索引需要花費時間

②索引型別

③索引的資料結構

mysql官方對索引的定義為:索引(index)是幫助mysql高效獲取資料的資料結構

資料庫主要是查詢, 設計者為提公升速度 從演算法角度進行優化, 但是不同演算法適用於不同資料結構

順序查詢 資料量很大時效率極其低下

二分查詢 要求被檢索檔案有序

二叉樹查詢 只能應用於二叉樹上

但是資料本身的組織結構不可能完全滿足各種資料結構

所以,在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料,這樣就可以在這些資料結構上實現高階查詢演算法。這種資料結構,就是索引.

常用索引資料結構

問題: 紅黑樹等資料結構也可實現索引,但是檔案系統及資料庫系統普遍採用b-/+tree作為索引結構?

b-tree中一次檢索最多需要h-1次 i/o(根節點常駐記憶體),漸進複雜度為(o(h)=o(log_dn))

紅黑樹的i/o漸進複雜度也為o(h),效率就明顯比b-tree差很多

④mysql索引實現

在mysql中,索引屬於儲存引擎級別的概念,不同儲存引擎對索引的實現方式是不同的

mysql的優化主要分為結構優化(scheme optimization)和查詢優化(query optimization)

這塊內容已經涉及本人能力邊界, 需要補充新知識 再來進一步探索

參考**:

mysql 資料結構 Mysql索引資料結構

mysql索引資料結構 當慢查詢時,看sql是否走索引。索引的本質 索引是幫助mysql高效獲取資料的排好序的資料結構。mysql若不建立索引,查詢某條資料時則會逐行掃瞄,每掃瞄一行資料就會做一次磁碟io。b tree 葉節點具有相同的深度,葉節點的指標為空。所有索引元素不重複。葉節點中的資料索引從...

mysql索引資料結構 mysql索引資料結構

什麼是索引?索引就是排好序的資料結構,可以幫助我們快速的查詢到資料 幾種資料結構 二叉樹 如果資料是單邊增長的情況 那麼出現的就是和鍊錶一樣的資料結構了,樹高度大 紅黑樹 在二叉樹的基礎上多了樹平衡,也叫二叉平衡樹,不像二叉樹那樣極端的情況會往乙個方向發展。同樣我們查詢6,在二叉樹中我們需要經過6個...

MySQL索引資料結構

mysql官方對索引的定義為 索引 index 是幫助mysql高效獲取資料的資料結構。句子主幹就是索引是資料結構。資料庫查詢是資料庫的主要功能,我們都希望查詢資料的速度盡可能快,因此資料庫系統設計會從查詢的優化的角度進行優化。最基本的查詢演算法就是順序查詢,但這種複雜度為o n 查詢在資料量大的時...