程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql 索引構造直觀圖解引見

Mysql 索引構造直觀圖解引見

編輯:MySQL綜合教程

Mysql 索引構造直觀圖解引見。本站提示廣大學習愛好者:(Mysql 索引構造直觀圖解引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql 索引構造直觀圖解引見正文


一.模仿創立原始數據 下圖中,右邊是自己方便闡明,模仿的數據。引擎為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? 這裡是復雜引見一個索引的存儲原理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved