《MYSQL教程Mysql 索引結構直觀圖解介紹》要點:
本文介紹了MYSQL教程Mysql 索引結構直觀圖解介紹,希望對您有用。如果有疑問,可以聯系我們。
MYSQL學習一.模擬創建原始數據 下圖中,左邊是自己方便說明,模擬的數據.引擎為mysiam~ 右邊是用EXCEL把它們隨機排列后的一個正常仿真數據表,把主鍵依照1-27再排列(不隨機的話我在模擬數據時本來就是按順序寫的,再加索引看不大出這個索引排序的過程) 也就是說右邊的數據,使我們要測試的原始數據,沒建索引前是這樣排序的,后邊所有的數據都是以這個為依準進行的,這樣更好看索引生成后的排序效果. 該表有4個字段(id,a,b,c),共21行數據
MYSQL學習二.創建索引 a 如下圖,當創建索引a以后,在該索引結構中,從原來的依照主鍵ID排序,變成了新的規則,我們說索引其實就是一個數據結構.則建立索引a,就是新另建立一個結構,排序依照字段a規則排序,第一條為主鍵ID為1代表的數據行,第二條ID=3的數據行,第三條ID=5代表的數據行...
MYSQL學習新排序主鍵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排序順序相近.
MYSQL學習三.創建索引 (a,b) 如下圖,當創建聯合索引(a,b)以后,在該索引結構中,從原來的依照主鍵ID排序,變成了新的規則,排序規則先依照字段a排序,在a的基礎上在依照字段b排序.即在索引a的基礎上,對字段b也進行了排序.
MYSQL學習新排序主鍵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
MYSQL學習四.創立索引 (a,b,c)
MYSQL學習字段(a,b,c)索引,先按a,b索引排序,然后在(a,b)的基礎上,依照c排序
MYSQL學習新排序主鍵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學習五.結論:
MYSQL學習和上一篇Mysql-索引-BTree類型【精簡版】講的一樣,B-TREE樹的最后一排葉子節點,從左往右排,就是依照這個順序的,不同索引不同順序.
MYSQL學習我們知道,讀取數據的一個過程(相當于找房間的過程),如果有索引(房間登記表),先讀取索引的數據結構(因為它數據小讀取快嘛),在其結構的葉子節點,找到真實物理磁盤的存放位置(相當于找到門牌號碼了),然后拿著門牌號碼去磁盤里直接拿數據,這便是一個讀取數據的過程.如果沒索引那你就相當于不知道目的地,挨個房間找吧.
MYSQL學習當沒有索引時,其實主鍵ID就是他們的索引,依照主鍵ID從小到大的規則排列; 當有所索引時,索引a,聯合索引(a,b),聯合索引(a,b,c)三者的對應3個B+TREE結構上,其葉子節點末尾指向的物理磁盤是是不一樣的.
MYSQL學習結論: 1.如果沒有建立索引,是依照ID主鍵遞增排列 2.當建立了索引a,會生成一個新的結構索引(B+TREE)用來記錄新的一個結構規則,方便快速查找 3.當建立索引a,索引ab,索引abc,他們三個對應的數據排序是不一樣的 4.索引abc,是兼顧了索引ab,索引a的,所以有前者時后兩者可以不用建立 5.當建立了索引,非索引的列默認是依照ID遞增來排序的
MYSQL學習當新insert一條數據時,存儲數據的同時,也會維護此表的一個索引,把它安放到一個合適的位置.解釋了為什么再數據量特別年夜的時候索引可能會有負面影響,在被索引的表上INSERT和DELETE會變慢,頻繁的插入刪除數據同樣會對維護索引消耗時間,瓶頸多少??500W? 這里是簡單介紹一個索引的存儲原理.
《MYSQL教程Mysql 索引結構直觀圖解介紹》是否對您有啟發,歡迎查看更多與《MYSQL教程Mysql 索引結構直觀圖解介紹》相關教程,學精學透。維易PHP學院為您提供精彩教程。