最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一.模擬創(chuàng)建原始數(shù)據(jù) 下圖中,左邊是自己方便說明,模擬的數(shù)據(jù)。引擎為mysiam~ 右邊是用EXCEL把它們隨機(jī)排列后的一個(gè)正常仿真數(shù)據(jù)表,把主鍵按照1-27再排列(不隨機(jī)的話我在模擬數(shù)據(jù)時(shí)本來就是按順序?qū)懙?,再加索引看不大出這個(gè)索引排序的過程) 也就是說右邊的數(shù)據(jù),使我們要測(cè)試的原始數(shù)據(jù),沒建索引前是這樣排序的,后邊所有的數(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)中,從原來的按照主鍵ID排序,變成了新的規(guī)則,我們說索引其實(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來排,比如同樣是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)中,從原來的按照主鍵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樹的最后一排葉子節(jié)點(diǎn),從左往右排,就是按照這個(gè)順序的,不同索引不同順序。

我們知道,讀取數(shù)據(jù)的一個(gè)過程(相當(dāng)于找房間的過程),如果有索引(房間登記表),先讀取索引的數(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ù)的過程。如果沒索引那你就相當(dāng)于不知道目的地,挨個(gè)房間找吧。

當(dāng)沒有索引時(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.如果沒有建立索引,是按照ID主鍵遞增排列 2.當(dāng)建立了索引a,會(huì)生成一個(gè)新的結(jié)構(gòu)索引(B+TREE)用來記錄新的一個(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遞增來排序的

當(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ǔ)原理。

相關(guān)文章

  • mysql表操作-約束刪除、用戶填加、授權(quán)和撤權(quán)方式

    mysql表操作-約束刪除、用戶填加、授權(quán)和撤權(quán)方式

    本文詳細(xì)介紹了數(shù)據(jù)庫的約束刪除、密碼策略設(shè)置、用戶管理以及權(quán)限控制的具體操作步驟,包括查看與修改表的約束條件、設(shè)置數(shù)據(jù)庫密碼的策略、增加用戶以及用戶權(quán)限的授權(quán)與撤銷等,這些操作對(duì)于數(shù)據(jù)庫管理員來說是基本且必須掌握的技能
    2024-09-09
  • mysql 5.7 安裝配置方法圖文教程

    mysql 5.7 安裝配置方法圖文教程

    這篇文章主要為大家分享了mysql 5.7 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • MySQL嵌套事務(wù)所遇到的問題

    MySQL嵌套事務(wù)所遇到的問題

    這篇文章主要介紹了MySQL嵌套事務(wù)所遇到的問題的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • MySQL讀寫分離原理詳細(xì)解析

    MySQL讀寫分離原理詳細(xì)解析

    這篇文章主要介紹了MySQL讀寫分離原理詳細(xì)解析,讀寫分離是基于主從復(fù)制來實(shí)現(xiàn)的,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • mysql分區(qū)表學(xué)習(xí)之日期分區(qū)

    mysql分區(qū)表學(xué)習(xí)之日期分區(qū)

    這篇文章主要給大家介紹了關(guān)于mysql分區(qū)表學(xué)習(xí)之日期分區(qū)的相關(guān)資料,分區(qū)是一種表的設(shè)計(jì)模式,通俗地講表分區(qū)是將一大表,根據(jù)條件分割成若干個(gè)小表,需要的朋友可以參考下
    2023-08-08
  • MYSQL事務(wù)的隔離級(jí)別與MVCC

    MYSQL事務(wù)的隔離級(jí)別與MVCC

    這篇文章主要介紹了MYSQL事務(wù)的隔離級(jí)別與MVCC,文章首先通過事務(wù)的相關(guān)內(nèi)容展開主題主要介紹,具有一定的參考價(jià)值,需要的小伙伴可以參一下
    2022-05-05
  • MySQL約束攻擊的原理和復(fù)現(xiàn)方式

    MySQL約束攻擊的原理和復(fù)現(xiàn)方式

    這篇文章主要介紹了MySQL約束攻擊的原理和復(fù)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,
    2023-11-11
  • mysql 10w級(jí)別的mysql數(shù)據(jù)插入

    mysql 10w級(jí)別的mysql數(shù)據(jù)插入

    幾天前做了一個(gè)短信發(fā)送東東,一次性要插入10w以上的手機(jī)號(hào)碼。我的個(gè)天啊。
    2011-08-08
  • 關(guān)于mysql調(diào)用新手們常犯的11個(gè)錯(cuò)誤總結(jié)

    關(guān)于mysql調(diào)用新手們常犯的11個(gè)錯(cuò)誤總結(jié)

    對(duì)于很多新手們來說,使用PHP可以在短短幾個(gè)小時(shí)之內(nèi)輕松地寫出具有特定功能的代碼。但是,構(gòu)建一個(gè)穩(wěn)定可靠的數(shù)據(jù)庫卻需要花上一些時(shí)日和相關(guān)技能。下面這篇文章就來總結(jié)了關(guān)于mysql調(diào)用新手們常犯的十一個(gè)錯(cuò)誤,需要的朋友可以參考學(xué)習(xí)。
    2017-03-03
  • MySQL中的行級(jí)鎖詳解

    MySQL中的行級(jí)鎖詳解

    MySQL中的行級(jí)鎖是InnoDB存儲(chǔ)引擎提供的一種細(xì)粒度鎖,基于索引實(shí)現(xiàn),MySQL中鎖有很多種,其中從鎖的粒度來區(qū)分的話可以分為表級(jí)鎖,行級(jí)鎖,頁級(jí)鎖,本文主要介紹MySQL中的行級(jí)鎖,感興趣的朋友一起看看吧
    2025-03-03

最新評(píng)論

木里| 延长县| 九台市| 陇川县| 突泉县| 乌兰浩特市| 科技| 孟津县| 龙南县| 项城市| 瑞金市| 虎林市| 吉林市| 凤山市| 石泉县| 丁青县| 湖南省| 钦州市| 三明市| 突泉县| 花莲县| 威海市| 鸡泽县| 龙山县| 朔州市| 安化县| 五峰| 萨嘎县| 崇明县| 彝良县| 二连浩特市| 台中市| 嵊州市| 丰台区| 清新县| 高邑县| 延吉市| 阿坝县| 孟村| 平陆县| 靖安县|