mysql索引結構演變

2021-10-01 13:57:48 字數 687 閱讀 4947

索引

什麼是索引

索引是乙個排序的列表,在這個列表中儲存著索引的值和包含這個值的資料所在行的實體地址。當資料量十分龐大時,索引可以高效的獲取到資料所在的位址,而無需全表掃瞄,大大減少io次數。

索引的分類

因為mysql支援多儲存引擎,如常用的innodb和myisam引擎,針對不同的引擎,會有不同的索引型別,如主鍵索引、唯一索引、普通索引、全文索引、組合索引等。

主鍵索引:不允許重複、不允許控制

唯一索引:值唯

一、可以為空

普通索引:無限制,可值可重複,可為空

全文索引:對大文字字段構建的索引

組合索引:多個字段聯合起來構建的索引,這些列中的值不允許有空值,有空值,索引失效。

組合索引遵循最左匹配原則

索引的底層原理

以myisam和innodb為例講解下索引的底層原理:

myisam資料

檔案結構

[e1]

.frm檔案:儲存表結構元資料

.myd檔案:即my data,表資料檔案

.myi檔案:即my index,索引檔案

innodb資料檔案結構

.frm檔案:儲存表結構元資料

.ibd檔案:單表表空間檔案,每個表使用乙個表空間檔案(file per table),存放使用者資料庫表資料和索引

mysql多索引結構 MySQL 索引結構詳解

innodb的主鍵索引 primary key 是cluster形式的 聚簇索引 innodb的非主鍵索引 secondary index 是普通的b tree索引。兩種索引在root node和branch node是一樣的,在leaf node就不一樣了。primary key存放的是表的實際資...

MySQL索引結構

b 樹有如下特點 所有鍵值分布在整顆樹中 任何乙個關鍵字出現且只出現在乙個結點中 搜尋有可能在非葉子結點結束 在關鍵字全集內做一次查詢,效能逼近二分查詢 b 樹是b 樹的變體,也是一種多路搜尋樹,它與 b 樹的不同之處在於 所有關鍵字儲存在葉子節點出現,內部節點 非葉子節點並不儲存真正的 data ...

mysql not 索引 MySQL 索引結構

為資料表增加索引 index 可以提公升mysql資料查詢效率。mysql中所有型別的資料字段都可以有索引。索引指向了資料表中的記錄 行 可以快速判斷某行記錄是否符合 where 語句中的限定條件。但是索引並不是越多越好 索引需要耗費儲存空間 索引越多,mysql在決定採用哪個索引時也會消耗更多時間...