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

MySQL學(xué)習(xí)教程之聚簇索引

 更新時間:2020年11月04日 09:37:44   作者:超人不會飛  
這篇文章主要給大家介紹了關(guān)于MySQL學(xué)習(xí)教程之聚簇索引的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

聚簇,其實(shí)是相對于InnoDB這個數(shù)據(jù)庫引擎來說的,因此在將聚簇索引的時候,我們通過InnoDB和MyISAM這兩個MySQL的數(shù)據(jù)庫引擎展開。

InnoDB和MyISAM的數(shù)據(jù)分布對比

CREATE TABLE test (col1 int NOT NULL,
     col2 int NOT NULL,
     PRIMARY KEY(col1),
     KEY(col2));

首先通過以上SQL語句創(chuàng)建出一個表格,其中col1是主鍵,兩列數(shù)據(jù)均創(chuàng)建了索引。然后我們數(shù)據(jù)的主鍵取值為1-10000,按照隨機(jī)的順序插入數(shù)據(jù)庫中。

MyISAM的數(shù)據(jù)分布

MyISAM的數(shù)據(jù)存儲邏輯比較簡單,就是按照數(shù)據(jù)插入的順序創(chuàng)建出一個數(shù)據(jù)表格。直觀上來看如下圖:

可以看出,數(shù)據(jù)就是按照插入的順序“一行一行”生成的。前面還會有一個行號的字段,用處就是在查找到索引的時候能夠快速地定位到該行索引的位置。

我們再來看一下具體的細(xì)節(jié):

上圖展示的情況就是在MyISAM引擎下,按照主鍵建立的索引的具體實(shí)現(xiàn)。可以看出在主鍵按照順序排列在葉子結(jié)點(diǎn)上的同時,節(jié)點(diǎn)中還存儲著這個主鍵在數(shù)據(jù)庫表格中存在的具體的行號,正如我們上面所說的,這個行號可以幫助我們快速地定位到表中數(shù)據(jù)的位置,也可以把這個行號理解為一個指針,指向了這個主鍵所在的具體數(shù)據(jù)行。

那么如果我們按照col2建立索引呢?會有什么不同嗎?答案是不會的:

所以得到的結(jié)論就是在MyISAM中建立索引是否是主鍵索引其實(shí)是沒有區(qū)別的,唯一不同的就是這是一個“主鍵的索引”。

InnoDB的數(shù)據(jù)分布

因?yàn)镮nnoDB支持聚簇索引,所以會與MyISAM上的索引實(shí)現(xiàn)方式有所區(qū)別。

我們先看看基于主鍵的聚簇索引在InnoDB上的實(shí)現(xiàn)方式:

首先,和MyISAM上的主鍵索引一樣,這里的索引的葉子結(jié)點(diǎn)上同樣也是包括了主鍵的值,并且主鍵的值是按照順序排列的。不同的是,每一個葉子結(jié)點(diǎn)還包括了事務(wù)id,回滾指針和其他非主鍵列的值(這里指的col2)。所以我們可以理解為InnoDB上的聚簇索引,是將原來表格中的所有的行數(shù)據(jù)按照主鍵進(jìn)行排列然后放在了索引的葉子節(jié)點(diǎn)上。這就是一個與MyISAM在主鍵索引上的一個不同。 MyISAM的主鍵索引在查找到對應(yīng)的主鍵值之后需要通過指針(行號)再去表中找到相對應(yīng)的數(shù)據(jù)行,而InnoDB的主鍵索引,將數(shù)據(jù)信息全部放在了索引里面,可以直接在索引中查找拿到。

再來看看InnoDB中的二級索引的情況:

可以看到,和InnoDB中的主鍵索引不同,二級索引并沒有在葉子結(jié)點(diǎn)存儲所有的行數(shù)據(jù)信息,而是除了索引列的值外,只存儲了這個數(shù)據(jù)行所對應(yīng)的主鍵的信息。我們知道在MyISAM中,二級索引和主鍵索引一樣,除了索引列的值外,只存儲了一個指針(行號)的信息。

對比一下兩個引擎上的二級索引。即存儲指針和存儲主鍵值的優(yōu)劣。

首先存儲主鍵值會比只存儲一個指針帶來的空間開銷更大。但是當(dāng)我們數(shù)據(jù)表在進(jìn)行分裂或者其他改變結(jié)構(gòu)的操作的時候,存儲主鍵值的索引并不會收到影響,而存儲指針的索引,可能就要重新進(jìn)行更新維護(hù)。

用一個圖對兩個引擎中的兩種索引進(jìn)行對比:

總結(jié)

到此這篇關(guān)于MySQL學(xué)習(xí)教程之聚簇索引的文章就介紹到這了,更多相關(guān)MySQL聚簇索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 配置mysql允許遠(yuǎn)程連接的方法

    配置mysql允許遠(yuǎn)程連接的方法

    默認(rèn)情況下,MySQL只允許本地登錄,如果要開啟遠(yuǎn)程連接,則需要修改/etc/my.cnf文件
    2013-02-02
  • MYSQL刪除重復(fù)數(shù)據(jù)的簡單方法

    MYSQL刪除重復(fù)數(shù)據(jù)的簡單方法

    業(yè)務(wù)中遇到要從表里刪除重復(fù)數(shù)據(jù)的需求,使用了下面的方法,執(zhí)行成功,大家可以參考使用
    2013-11-11
  • MySQL中預(yù)處理語句prepare、execute與deallocate的使用教程

    MySQL中預(yù)處理語句prepare、execute與deallocate的使用教程

    這篇文章主要介紹了MySQL中預(yù)處理語句prepare、execute與deallocate的使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Mysql性能優(yōu)化案例 - 覆蓋索引分享

    Mysql性能優(yōu)化案例 - 覆蓋索引分享

    這篇文章主要介紹了Mysql性能優(yōu)化案例 - 覆蓋索引分享,需要的朋友可以參考下
    2016-03-03
  • Mysql中幾種插入效率的實(shí)例對比

    Mysql中幾種插入效率的實(shí)例對比

    這篇文章通過實(shí)例跟大家介紹了Mysql中幾種插入方法的效率對比,這其中包括逐條插入、基于事務(wù)的批量插入、單條語句一次插入多組數(shù)據(jù)以及導(dǎo)入數(shù)據(jù)文件等四種方法的對比,文中通過實(shí)例代碼介紹很詳細(xì),需要的朋友們下來來一起看看吧。
    2017-04-04
  • MySQL主從同步必然有延遲如何解決

    MySQL主從同步必然有延遲如何解決

    MySQL主從同步延遲的解決方案包括優(yōu)化硬件和網(wǎng)絡(luò)、MySQL配置、數(shù)據(jù)庫結(jié)構(gòu)和查詢、監(jiān)控和告警、架構(gòu)優(yōu)化、業(yè)務(wù)層面解決,選擇合適的解決方案需要綜合考慮延遲容忍度、數(shù)據(jù)一致性要求、系統(tǒng)復(fù)雜性和成本
    2025-03-03
  • MySQL 存儲過程中執(zhí)行動態(tài)SQL語句的方法

    MySQL 存儲過程中執(zhí)行動態(tài)SQL語句的方法

    這篇文章主要介紹了MySQL 存儲過程中執(zhí)行動態(tài)SQL語句的方法,需要的朋友可以參考下
    2014-08-08
  • mysql登錄報(bào)錯提示:ERROR 1045 (28000)的解決方法

    mysql登錄報(bào)錯提示:ERROR 1045 (28000)的解決方法

    這篇文章主要介紹了mysql登錄報(bào)錯提示:ERROR 1045 (28000)的解決方法,詳細(xì)分析了出現(xiàn)MySQL登陸錯誤的原因與對應(yīng)的解決方法,需要的朋友可以參考下
    2016-04-04
  • Ubuntu 18.04配置mysql以及配置遠(yuǎn)程連接的步驟

    Ubuntu 18.04配置mysql以及配置遠(yuǎn)程連接的步驟

    這篇文章主要給大家介紹了關(guān)于Ubuntu 18.04配置mysql以及配置遠(yuǎn)程連接的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • mysql登錄警告問題的解決方法

    mysql登錄警告問題的解決方法

    這篇文章主要為大家詳細(xì)介紹了mysql登錄警告問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論

古蔺县| 益阳市| 平山县| 合水县| 寻乌县| 新野县| 沂南县| 福州市| 凤庆县| 梁河县| 石渠县| 潼关县| 天水市| 郸城县| 柳江县| 龙里县| 延川县| 满洲里市| 丹棱县| 咸宁市| 探索| 凤阳县| 安陆市| 吴旗县| 贡嘎县| 丹寨县| 平武县| 红安县| 鄂尔多斯市| 乃东县| 舞钢市| 长顺县| 如皋市| 车险| 宜宾县| 秭归县| 五莲县| 商都县| 沙河市| 万荣县| 松潘县|