1.索引的基礎(chǔ)概念
大量插入數(shù)據(jù)的時候,會有一個數(shù)據(jù)頁分裂的過程.
其中的自增主鍵是從小到大依次排序的,所以每一次的插入都會伴隨數(shù)據(jù)行從一個數(shù)據(jù)頁挪動到另一個數(shù)據(jù)頁.要快速從大量的數(shù)據(jù)頁中找到一行數(shù)據(jù),根據(jù)主鍵ID去和每一個數(shù)據(jù)頁的第一行的主鍵ID做對比就知道這行數(shù)據(jù)到底是在哪一個數(shù)據(jù)頁中.找到這個數(shù)據(jù)頁之后只需要在這個數(shù)據(jù)頁中遍歷即可

2.由雙向鏈表演化到B+樹
一個大數(shù)據(jù)量的表中,那么他的主鍵必定是有很多的,那么他的主鍵的索引也是很多的.
一條一條的索引就會組成一個索引頁(生成相應(yīng)的索引頁號),也會像數(shù)據(jù)頁那樣雙向鏈表連起來
數(shù)據(jù)量再大一點,索引頁也發(fā)生裂變,也需要查索引頁的索引來快速查找(將索引頁中的最小主鍵ID拿出來記錄,相當(dāng)于好幾個數(shù)據(jù)頁中的最小主鍵ID值)
于是就變成了一顆樹,通過二分法判斷大小一層一層的查下來

3.什么是聚簇索引
其實基于主鍵的索引是可以將這個索引頁和數(shù)據(jù)頁連起來的,數(shù)據(jù)頁就像這顆B+樹上的葉子節(jié)點一樣,所以基于主鍵的索引B+樹被稱為聚簇索引

4.什么叫做二級索引以及回表
基于主鍵的索引樹被稱為聚簇索引,那么基于普通字段的索引就被稱為二級索引
因為該索引找到的值只是主鍵值,還需要通過聚簇索引才能找到完整的一條數(shù)據(jù).所以稱作為二級索引
那么這個過程被稱為回表
5.聯(lián)合索引的查詢方式
兩個字段的聯(lián)合索引(A,B) 葉子節(jié)點(數(shù)據(jù)頁)是先排序A再排序B(A值一樣的數(shù)據(jù)按B排序)整理好的
那么他的查詢方式是先二分法先查最左邊的A字段,然后在找B字段的索引,然后再回表,所以才會有最左原則
6.索引注意的點
6.1.每一個索引就會對應(yīng)一個B+樹,所以增刪改查維護(hù)起來是很復(fù)雜的,
6.2.同時索引頁也是在數(shù)據(jù)庫中,所以去維護(hù)索引也是要耗時IO的
所以盡量少建索引來優(yōu)化查詢,而不是一味的建索引