欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年12月13日 20:18:57   投稿:mdxy-dxy  
Mysql-索引結(jié)構(gòu)直觀圖解。上一篇剛剛通俗化的說明了B-TREE的幾個結(jié)果與存儲方式,其實(shí)跟索引感覺上還是沒有關(guān)聯(lián)起來, 那么本篇,就通過實(shí)際的一個數(shù)據(jù)行的例子,說明一下

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

二.創(chuàng)建索引 a 如下圖,當(dāng)創(chuàng)建索引a以后,在該索引結(jié)構(gòu)中,從原來的按照主鍵ID排序,變成了新的規(guī)則,我們說索引其實(shí)就是一個數(shù)據(jù)結(jié)構(gòu)。則建立索引a,就是新另建立一個結(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相同時,他們的排列 前后主鍵ID來排,比如同樣是a=1.1的值,但是他們的排序是ID值為1,3,5,6。。對應(yīng)的行,和主鍵ID排序順序相近。

三.創(chuàng)建索引 (a,b) 如下圖,當(dāng)創(chuàng)建聯(lián)合索引(a,b)以后,在該索引結(jié)構(gòu)中,從原來的按照主鍵ID排序,變成了新的規(guī)則,排序規(guī)則先按照字段a排序,在a的基礎(chǔ)上在按照字段b排序。即在索引a的基礎(chǔ)上,對字段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值都相同時,他們的排列前后,也是由主鍵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類型【精簡版】講的一樣,B-TREE樹的最后一排葉子節(jié)點(diǎn),從左往右排,就是按照這個順序的,不同索引不同順序。

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

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

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

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

相關(guān)文章

  • mysql不重啟的情況下修改參數(shù)變量

    mysql不重啟的情況下修改參數(shù)變量

    這篇文章主要介紹了mysql不重啟的情況下修改參數(shù)變量,需要的朋友可以參考下
    2014-06-06
  • MySQL慢查詢?nèi)罩镜淖饔煤烷_啟

    MySQL慢查詢?nèi)罩镜淖饔煤烷_啟

    這篇文章主要給大家介紹了關(guān)于MySQL慢查詢?nèi)罩镜淖饔煤烷_啟的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 一個小時學(xué)會MySQL數(shù)據(jù)庫(張果)

    一個小時學(xué)會MySQL數(shù)據(jù)庫(張果)

    當(dāng)前大量的網(wǎng)站使用php語言,那么對應(yīng)的就是mysql數(shù)據(jù)庫,這里就為大家分享一下MySQL數(shù)據(jù)庫的相關(guān)知識,希望大家多多支持腳本之家
    2018-01-01
  • Mysql數(shù)據(jù)表中的蠕蟲復(fù)制使用方法

    Mysql數(shù)據(jù)表中的蠕蟲復(fù)制使用方法

    在本文中我們給大家分享了關(guān)于怎么使用Mysql數(shù)據(jù)表中的蠕蟲復(fù)制的相關(guān)知識點(diǎn),有興趣的朋友們學(xué)習(xí)下。
    2019-02-02
  • 5個MySQL GUI工具推薦,幫助你進(jìn)行數(shù)據(jù)庫管理

    5個MySQL GUI工具推薦,幫助你進(jìn)行數(shù)據(jù)庫管理

    這篇文章主要介紹了5個MySQL GUI工具推薦,幫助大家更好的進(jìn)行MySQL數(shù)據(jù)庫管理,感興趣的朋友可以了解下
    2020-08-08
  • Mysql 5.7.19 免安裝版配置方法教程詳解(64位)

    Mysql 5.7.19 免安裝版配置方法教程詳解(64位)

    這篇文章主要介紹了Mysql 5.7.19 免安裝版配置方法教程詳解,需要的朋友可以參考下
    2017-08-08
  • Mysql查看最大連接數(shù)和修改最大連接數(shù)的講解

    Mysql查看最大連接數(shù)和修改最大連接數(shù)的講解

    今天小編就為大家分享一篇關(guān)于Mysql查看最大連接數(shù)和修改最大連接數(shù)的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL多表查詢的具體實(shí)例

    MySQL多表查詢的具體實(shí)例

    這篇文章主要介紹了MySQL多表查詢的具體實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • win10安裝zip版MySQL8.0.19的教程詳解

    win10安裝zip版MySQL8.0.19的教程詳解

    這篇文章主要介紹了win10安裝zip版MySQL8.0.19的教程詳細(xì),本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • MySQL Memory 存儲引擎淺析

    MySQL Memory 存儲引擎淺析

    需求源自項(xiàng)目中的MemCache需求,開始想用MemCached(官方站點(diǎn):http://memcached.org/ ),但這個在Linux下面應(yīng)用廣泛的開源軟件無官方支持的Windows版本
    2011-12-12

最新評論