mysql小課堂 MYSQL索引入門(上)

2021-10-19 06:45:46 字數 1090 閱讀 2017

從圖中可以看出:

1、表t(id1 int,id2 int,content varchar)在id1和id2列上分別建了兩個普通索引,索引的構建方式為b+樹。

2、根據b+樹的原理,葉子節點之間是有指標連線的,可以進行遍歷。

3、innodb資料和聚集索引是一起存放的,聚集索引的葉子節點包含key值和資料,非聚集索引葉子節點包含了本索引的key值和對應的聚集索引的key值。

例如:(8,150,aaa)這一行,存放在聚集索引的葉子節點上,這個葉子節點同時存放了key值8和資料記錄(8,150,aaa)。

d2列上的非聚集索引的葉子節點存放了非聚集索引列id2的值150和聚集索引列id1的值8,這樣就儲存了非聚集索引key值和聚集索引key值的對應關係。

4、聚集索引建立規則:

l如果有主鍵,主鍵是聚集索引。

l  如果沒有主鍵,有多個唯一索引,第乙個唯一索引是聚集索引。

l  如果既有主鍵又有唯一索引,主鍵是聚集索引,

l  如果沒有主鍵也沒有唯一索引,會有乙個6位元組id作為隱藏索引。

l  所以,聚集索引肯定是唯一索引。

下面針對三種情況是如何利用聚集索引儲存結構進行查詢的,進行簡單說明(實際查詢中,資料庫會對索引的查詢方案進行評估後才決定是否使用):

1、無索引查詢(綠線)

select id1,id2,content from t where id1 = 15;

表t上沒有建立任何索引,實際上mysql還是會建立隱藏的id列作為主鍵。查詢時,在b+樹的葉子節點進行順序查詢,直到查到需要的資料為止,稱為全表掃瞄。

2、id1為聚集索引,在聚集索引上查詢(紅線)

select id1,id2,content from t where id1 = 15;

查詢時,按搜尋樹的特性進行查詢,直接定位到要查詢的葉子節點,到葉子節點後進行葉子節點內的查詢,直到查詢到需要的資料,稱為索引查詢。

3、id1為聚集索引,id2為非聚集索引,在非聚集索引上查詢(藍線)

select id1,id2,content from t where id2 = 15;

先在非聚集索引的樹上進行查詢,查詢到後,可以得到對應的聚集索引的key值,然後再去聚集索引上查詢。

mysql 索引 手冊 MySQL 索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

mysql非同步索引 MySQL索引

一 為什麼要使用索引 優化查詢,減少掃瞄的錶行數。打個比方,索引的作用就和查新華字典,字典的索引的作用的一樣的。二 索引的型別 1 索引是在儲存引擎中實現的,而不是在伺服器層中實現的。所以,每種儲存引擎的索引都不一定完全相同,並不是所有的儲存引擎都支援所有的索引型別。2 如果使用的是組合索引 即有多...

mysql 索引 鍵名 mysql 索引

3 索引型別 在建立索引時,可以規定索引能否包含重複值。如果不包含,則索引應該建立為primary key或unique索引。對於單列惟一性索引,這保證單列不包含重複的值。對於多列惟一性索引,保證多個值的組合不重複。primary key索引和unique索引非常類似。事實上,primary key...