Mysql 索引結構直觀圖解介紹_Mysql

來源:互聯網
上載者:User

一.類比建立未經處理資料 下圖中,左邊是自己方便說明,類比的資料。引擎為mysiam~ 右邊是用EXCEL把它們隨機排列後的一個正常模擬資料表,把主鍵按照1-27再排列(不隨機的話我在類比資料時本來就是按順序寫的,再加索引看不大出這個索引排序的過程) 也就是說右邊的資料,使我們要測試的未經處理資料,沒建索引前是這樣排序的,後邊所有的資料都是以這個為依准進行的,這樣更好看索引產生後的排序效果。 該表有4個欄位(id,a,b,c),共21行資料

二.建立索引 a 如下圖,當建立索引a以後,在該索引結構中,從原來的按照主鍵ID排序,變成了新的規則,我們說索引其實就是一個資料結構。則建立索引a,就是新另建立一個結構,排序按照欄位a規則排序,第一條為主鍵ID為1代表的資料行,第二條ID=3的資料行,第三條ID=5代表的資料行。。。

新排序主鍵ID(以ID代表他們這行的資料):1 3 5 6 9 16 18 23 26 2 10 11 12 13 14 15 20 25 4 7 8 17 19 21 22 24 27 不難發現,當欄位a相同時,他們的排列 前後主鍵ID來排,比如同樣是a=1.1的值,但是他們的排序是ID值為1,3,5,6。。對應的行,和主鍵ID排序次序相近。

三.建立索引 (a,b) 如下圖,當建立聯合索引(a,b)以後,在該索引結構中,從原來的按照主鍵ID排序,變成了新的規則,定序先按照欄位a排序,在a的基礎上在按照欄位b排序。即在索引a的基礎上,對欄位b也進行了排序。

新排序主鍵ID(以ID代表他們這行的資料):6 18 23 10 15 20 7 22 27 1 3 26 2 11 25 4 8 24 5 9 16 12 13 14 17 19 21 不難發現,當欄位a,b值都相同時,他們的排列前後,也是由主鍵ID決定的,比如同樣是a=1.1,b=2.1的行(18,6,23),但是他們的排序是6,18,23。 欄位(a,b)索引,先按a索引排序,然後在a的基礎上,按照b排序 6 18 23 10 15 20 7 22 27 1 3 26 2 11 25 4 8 24 5 9 16 12 13 14 17 19 21

四.建立索引 (a,b,c)

欄位(a,b,c)索引,先按a,b索引排序,然後在(a,b)的基礎上,按照c排序

新排序主鍵ID(以ID代表他們這行的資料):23 6 18 15 20 10 27 22 7 1 26 3 11 2 25 24 4 8 5 16 9 12 14 13 17 19 21

五.結論:

和上一篇Mysql-索引-BTree類型【精簡版】講的一樣,B-TREE樹的最後一排葉子節點,從左往右排,就是按照這個順序的,不同索引不同順序。

我們知道,讀取資料的一個過程(相當於找房間的過程),如果有索引(房間登記表),先讀取索引的資料結構(因為它資料小讀取快嘛),在其結構的葉子節點,找到真實物理磁碟的存放位置(相當於找到門牌號碼了),然後拿著門牌號碼去磁碟裡直接拿資料,這就是一個讀取資料的過程。如果沒索引那你就相當於不知道目的地,挨個房間找吧。

當沒有索引時,其實主鍵ID就是他們的索引,按照主鍵ID從小到大的規則排列; 當有所索引時,索引a,聯合索引(a,b),聯合索引(a,b,c)三者的對應3個B+TREE結構上,其葉子節點末尾指向的物理磁碟是是不一樣的。

結論: 1.如果沒有建立索引,是按照ID主鍵遞增排列 2.當建立了索引a,會產生一個新的結構索引(B+TREE)用來記錄新的一個結構規則,方便快速尋找 3.當建立索引a,索引ab,索引abc,他們三個對應的資料排序是不一樣的 4.索引abc,是兼顧了索引ab,索引a的,所以有前者時後兩者可以不用建立 5.當建立了索引,非索引的列預設是按照ID遞增來排序的

當新insert一條資料時,儲存資料的同時,也會維護此表的一個索引,把它安放到一個合適的位置。解釋了為什麼再資料量特別大的時候索引可能會有負面影響,在被索引的表上INSERT和DELETE會變慢,頻繁的插入刪除資料同樣會對維護索引消耗時間,瓶頸多少??500W? 這裡是簡單介紹一個索引的儲存原理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.