1.索引如果沒有特別指明類型,一般是說b樹索引,b樹索引使用b樹數據結構存儲數據,實際上很多存儲引擎使用的是b+樹,每一個葉子節點都包含指向下一個葉子節點的指針,從而方便葉子節點的範圍遍歷 2.底層的存儲引擎也可能使用不同的存儲結構,比如NDB集群存儲引擎使用了T樹,InnoDB使用的是B+樹 3. ...
1.索引如果沒有特別指明類型,一般是說b樹索引,b樹索引使用b樹數據結構存儲數據,實際上很多存儲引擎使用的是b+樹,每一個葉子節點都包含指向下一個葉子節點的指針,從而方便葉子節點的範圍遍歷
2.底層的存儲引擎也可能使用不同的存儲結構,比如NDB集群存儲引擎使用了T樹,InnoDB使用的是B+樹
3.MyISAM使用首碼壓縮技術使得索引更小,InnoDB按照原數據格式進行存儲,MyISAM通過數據的物理位置引用被索引的行,InnoDB根據主鍵引用被索引的行
4.b樹意味著所有的值是按照順序存儲的,並且每一個葉子頁到根的距離相同
5.b樹索引能夠加快訪問數據的速度,存儲引擎不需要再進行全表掃描來獲取需要的數據,取而代之的是從索引的根節點開始進行搜索,根節點的槽中存放了指向子節點的指針,存儲引擎根據這些指針向下層查找.通過比較節點頁的值和要查找的值可以找到合適的指針進入下層子節點.樹的深度和表的大小直接相關
6.葉子節點比較特別,他們的指針指向的是被索引的數據,而不是其他的節點頁
7.b樹對索引列是順序存儲的,所以很適合查找範圍數據.
8.索引對多個值進行排序的依據是,定義索引時列的順序,比如聯合索引key(a,b,c),這三個列的順序
9.上面的聯合索引對以下查詢語句有效
全值匹配
where a=x and b=x and c=x
最左首碼
where a=x
匹配列首碼
where a like x%
匹配範圍值
where a>x and a<x
精確匹配某一列範圍匹配另一列 where a=x and b like x%
10.因為索引樹的節點是有序的,可以用於查詢中的order by操作,如果可以按照某種方式查到值,那麼也可以按這種方式排序