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

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

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

聚簇,其實是相對于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,按照隨機的順序插入數(shù)據(jù)庫中。

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

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

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

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

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

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

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

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

因為InnoDB支持聚簇索引,所以會與MyISAM上的索引實現(xiàn)方式有所區(qū)別。

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

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

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

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

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

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

用一個圖對兩個引擎中的兩種索引進行對比:

總結(jié)

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

相關(guān)文章

  • 配置mysql允許遠程連接的方法

    配置mysql允許遠程連接的方法

    默認情況下,MySQL只允許本地登錄,如果要開啟遠程連接,則需要修改/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的使用教程,文中通過示例代碼介紹的非常詳細,對大家學(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中幾種插入效率的實例對比

    Mysql中幾種插入效率的實例對比

    這篇文章通過實例跟大家介紹了Mysql中幾種插入方法的效率對比,這其中包括逐條插入、基于事務(wù)的批量插入、單條語句一次插入多組數(shù)據(jù)以及導(dǎo)入數(shù)據(jù)文件等四種方法的對比,文中通過實例代碼介紹很詳細,需要的朋友們下來來一起看看吧。
    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登錄報錯提示:ERROR 1045 (28000)的解決方法

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

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

    Ubuntu 18.04配置mysql以及配置遠程連接的步驟

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

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

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

最新評論

潼关县| 正阳县| 仙桃市| 达日县| 定襄县| 镇赉县| 合山市| 紫金县| 北票市| 柳林县| 瓦房店市| 南汇区| 惠东县| 建德市| 宁德市| 林甸县| 和田县| 祁门县| 保山市| 襄樊市| 巴林左旗| 招远市| 攀枝花市| 来宾市| 综艺| 双牌县| 西充县| 萍乡市| 甘洛县| 开原市| 阳朔县| 永昌县| 淮安市| 佳木斯市| 吉安县| 宣威市| 江口县| 蒲城县| 天台县| 安康市| 垣曲县|