濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Mysql 索引結(jié)構(gòu)直觀圖解介紹

Mysql 索引結(jié)構(gòu)直觀圖解介紹

熱門標(biāo)簽:外呼系統(tǒng)線路經(jīng)常出問(wèn)題嗎 神行者百貨商場(chǎng)地圖標(biāo)注 外呼系統(tǒng)怎樣才能不封號(hào) 如何辦理400客服電話 地圖標(biāo)注百度競(jìng)價(jià) 地圖標(biāo)注什么軟件好用 安陽(yáng)手機(jī)自動(dòng)外呼系統(tǒng)原理是什么 地圖標(biāo)注專員入駐 西藏地圖標(biāo)注改進(jìn)點(diǎn)

一.模擬創(chuàng)建原始數(shù)據(jù) 下圖中,左邊是自己方便說(shuō)明,模擬的數(shù)據(jù)。引擎為mysiam~ 右邊是用EXCEL把它們隨機(jī)排列后的一個(gè)正常仿真數(shù)據(jù)表,把主鍵按照1-27再排列(不隨機(jī)的話我在模擬數(shù)據(jù)時(shí)本來(lái)就是按順序?qū)懙?,再加索引看不大出這個(gè)索引排序的過(guò)程) 也就是說(shuō)右邊的數(shù)據(jù),使我們要測(cè)試的原始數(shù)據(jù),沒(méi)建索引前是這樣排序的,后邊所有的數(shù)據(jù)都是以這個(gè)為依準(zhǔn)進(jìn)行的,這樣更好看索引生成后的排序效果。 該表有4個(gè)字段(id,a,b,c),共21行數(shù)據(jù)

二.創(chuàng)建索引 a 如下圖,當(dāng)創(chuàng)建索引a以后,在該索引結(jié)構(gòu)中,從原來(lái)的按照主鍵ID排序,變成了新的規(guī)則,我們說(shuō)索引其實(shí)就是一個(gè)數(shù)據(jù)結(jié)構(gòu)。則建立索引a,就是新另建立一個(gè)結(jié)構(gòu),排序按照字段a規(guī)則排序,第一條為主鍵ID為1代表的數(shù)據(jù)行,第二條ID=3的數(shù)據(jù)行,第三條ID=5代表的數(shù)據(jù)行。。。

新排序主鍵ID(以ID代表他們這行的數(shù)據(jù)):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 不難發(fā)現(xiàn),當(dāng)字段a相同時(shí),他們的排列 前后主鍵ID來(lái)排,比如同樣是a=1.1的值,但是他們的排序是ID值為1,3,5,6。。對(duì)應(yīng)的行,和主鍵ID排序順序相近。

三.創(chuàng)建索引 (a,b) 如下圖,當(dāng)創(chuàng)建聯(lián)合索引(a,b)以后,在該索引結(jié)構(gòu)中,從原來(lái)的按照主鍵ID排序,變成了新的規(guī)則,排序規(guī)則先按照字段a排序,在a的基礎(chǔ)上在按照字段b排序。即在索引a的基礎(chǔ)上,對(duì)字段b也進(jìn)行了排序。

新排序主鍵ID(以ID代表他們這行的數(shù)據(jù)):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 不難發(fā)現(xiàn),當(dāng)字段a,b值都相同時(shí),他們的排列前后,也是由主鍵ID決定的,比如同樣是a=1.1,b=2.1的行(18,6,23),但是他們的排序是6,18,23。 字段(a,b)索引,先按a索引排序,然后在a的基礎(chǔ)上,按照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

四.創(chuàng)建索引 (a,b,c)

字段(a,b,c)索引,先按a,b索引排序,然后在(a,b)的基礎(chǔ)上,按照c排序

新排序主鍵ID(以ID代表他們這行的數(shù)據(jù)):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

五.結(jié)論:

和上一篇Mysql-索引-BTree類型【精簡(jiǎn)版】講的一樣,B-TREE樹(shù)的最后一排葉子節(jié)點(diǎn),從左往右排,就是按照這個(gè)順序的,不同索引不同順序。

我們知道,讀取數(shù)據(jù)的一個(gè)過(guò)程(相當(dāng)于找房間的過(guò)程),如果有索引(房間登記表),先讀取索引的數(shù)據(jù)結(jié)構(gòu)(因?yàn)樗鼣?shù)據(jù)小讀取快嘛),在其結(jié)構(gòu)的葉子節(jié)點(diǎn),找到真實(shí)物理磁盤的存放位置(相當(dāng)于找到門牌號(hào)碼了),然后拿著門牌號(hào)碼去磁盤里直接拿數(shù)據(jù),這就是一個(gè)讀取數(shù)據(jù)的過(guò)程。如果沒(méi)索引那你就相當(dāng)于不知道目的地,挨個(gè)房間找吧。

當(dāng)沒(méi)有索引時(shí),其實(shí)主鍵ID就是他們的索引,按照主鍵ID從小到大的規(guī)則排列; 當(dāng)有所索引時(shí),索引a,聯(lián)合索引(a,b),聯(lián)合索引(a,b,c)三者的對(duì)應(yīng)3個(gè)B+TREE結(jié)構(gòu)上,其葉子節(jié)點(diǎn)末尾指向的物理磁盤是是不一樣的。

結(jié)論: 1.如果沒(méi)有建立索引,是按照ID主鍵遞增排列 2.當(dāng)建立了索引a,會(huì)生成一個(gè)新的結(jié)構(gòu)索引(B+TREE)用來(lái)記錄新的一個(gè)結(jié)構(gòu)規(guī)則,方便快速查找 3.當(dāng)建立索引a,索引ab,索引abc,他們?nèi)齻€(gè)對(duì)應(yīng)的數(shù)據(jù)排序是不一樣的 4.索引abc,是兼顧了索引ab,索引a的,所以有前者時(shí)后兩者可以不用建立 5.當(dāng)建立了索引,非索引的列默認(rèn)是按照ID遞增來(lái)排序的

當(dāng)新insert一條數(shù)據(jù)時(shí),存儲(chǔ)數(shù)據(jù)的同時(shí),也會(huì)維護(hù)此表的一個(gè)索引,把它安放到一個(gè)合適的位置。解釋了為什么再數(shù)據(jù)量特別大的時(shí)候索引可能會(huì)有負(fù)面影響,在被索引的表上INSERT和DELETE會(huì)變慢,頻繁的插入刪除數(shù)據(jù)同樣會(huì)對(duì)維護(hù)索引消耗時(shí)間,瓶頸多少??500W? 這里是簡(jiǎn)單介紹一個(gè)索引的存儲(chǔ)原理。

您可能感興趣的文章:
  • 為什么MySQL數(shù)據(jù)庫(kù)索引選擇使用B+樹(shù)?
  • 獲取 MySQL innodb B+tree 的高度的方法
  • Mysql中索引和約束的示例語(yǔ)句
  • MySql范圍查找時(shí)索引不生效問(wèn)題的原因分析
  • MySql如何查看索引并實(shí)現(xiàn)優(yōu)化
  • MySQL 8.0 之索引跳躍掃描(Index Skip Scan)
  • Mysql索引常見(jiàn)問(wèn)題匯總
  • MySQL如何基于Explain關(guān)鍵字優(yōu)化索引功能
  • MySQL用B+樹(shù)作為索引結(jié)構(gòu)有什么好處

標(biāo)簽:阜陽(yáng) 衡水 張掖 萍鄉(xiāng) 貴港 酒泉 AXB 雞西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql 索引結(jié)構(gòu)直觀圖解介紹》,本文關(guān)鍵詞  Mysql,索引,結(jié)構(gòu),直觀,圖解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql 索引結(jié)構(gòu)直觀圖解介紹》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Mysql 索引結(jié)構(gòu)直觀圖解介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    沾益县| 张家港市| 阜南县| 定边县| 沙湾县| 大英县| 镇沅| 汝南县| 加查县| 赣州市| 香格里拉县| 保定市| 东宁县| 仲巴县| 新郑市| 株洲市| 夏河县| 岳普湖县| 普洱| 来宾市| 海盐县| 施甸县| 弥渡县| 苏尼特左旗| 扬州市| 琼海市| 永州市| 泰和县| 禄劝| 绍兴市| 蓬溪县| 资溪县| 望都县| 吐鲁番市| 岐山县| 台安县| 黄梅县| 全州县| 岐山县| 泾阳县| 上杭县|