MySql索引型別及其機制

2021-08-31 23:57:38 字數 1071 閱讀 5533

一、mysql索引型別

mysql目前主要有以下幾種索引型別:fulltext,hash,btree,rtree。

mysql常見索引有:主鍵索引、唯一索引、普通索引、全文索引、組合索引

fulltext

即為全文索引,目前只有myisam引擎支援。其可以在create table ,alter table ,create index 使用,不過目前只有 char、varchar ,text 列上可以建立全文索引。

全文索引並不是和myisam一起誕生的,它的出現是為了解決where name like 「%word%"這類針對文字的模糊查詢效率較低的問題。

hash

由於hash的唯一(幾乎100%的唯一)及類似鍵值對的形式,很適合作為索引。

hash索引可以一次定位,不需要像樹形索引那樣逐層查詢,因此具有極高的效率。但是,這種高效是有條件的,即只在「=」和「in」條件下高效,對於範圍查詢、排序及組合索引仍然效率不高。

btree

btree索引就是一種將索引值按一定的演算法,存入乙個樹形的資料結構中(二叉樹),每次查詢都是從樹的入口root開始,依次遍歷node,獲取leaf。這是mysql裡預設和最常用的索引型別。

rtree

rtree在mysql很少使用,僅支援geometry資料型別,支援該型別的儲存引擎只有myisam、bdb、innodb、ndb、archive幾種。

相對於btree,rtree的優勢在於範圍查詢。

二、索引的機制

1.為什麼我們新增完索引後查詢速度為變快?

傳統的查詢方法,是按照表的順序遍歷的,不論查詢幾條資料,mysql需要將表的資料從頭到尾遍歷一遍

在我們新增完索引之後,mysql一般通過btree演算法生成乙個索引檔案,在查詢資料庫時,找到索引檔案進行遍歷(折半查詢大幅查詢效率),找到相應的鍵從而獲取資料

2.索引的代價

3.在哪些column上使用索引?

總結: 滿足以下條件的字段,才應該建立索引.

a: 肯定在where條經常使用 b: 該字段的內容不是唯一的幾個值 c: 字段內容不是頻繁變化。

mysql索引機制

資料庫檔案系統及檔案系統都採用b 樹或者b 樹作為索引結構 1,d為b tree的度,d 2 2,h為b tree的高 3,每個非葉子節點都由n 1個key和n個指標組成,其中d n 2d 4,每個葉子節點至少包含乙個key和兩個指標,最多包含2d 1個key和2d個指標 5,所有葉子節點都在同一層...

mysql索引型別介紹 mysql索引型別介紹

索引型別介紹 主鍵索引 primary key 要求關鍵字不能重複,也不能為null,同時增加主鍵約束 主鍵索引定義時,不能命名 唯一索引 unique index 要求關鍵字不能重複,同時增加唯一約束 普通索引 index 對關鍵字沒有要求 全文索引 fulltext key 關鍵字的 不是所有欄...

mysql索引型別介紹 mysql索引型別介紹

b 樹是多路平衡查詢樹,相對於平衡二叉樹,對父結點的直接子結點個數,不再僅限於2,可以指定m 自定義 這樣可以在樹的深度不大量增加的前提下,儲存更多的結點。b 樹是通常在檔案系統中使用。特點 a 樹的每個結點最多有m 自定義 子結點 b 若根結點不是葉子結點,則至少有兩個子結點 c 除根結點外的所有...