mysql學(xué)習(xí)-8.索引的數(shù)據(jù)結(jié)構(gòu)

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)化查詢,而不是一味的建索引

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容