溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL中MyISAM存儲(chǔ)引擎的非聚簇索引分析

發(fā)布時(shí)間:2022-03-03 09:15:53 來源:億速云 閱讀:167 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“MySQL中MyISAM存儲(chǔ)引擎的非聚簇索引分析”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“MySQL中MyISAM存儲(chǔ)引擎的非聚簇索引分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

在InnoDB中索引即數(shù)據(jù),也就是聚簇索引的那顆B+樹的葉子節(jié)點(diǎn)中已經(jīng)包含了所有完整的用戶記錄。MyISAM的索引方案雖然也是使用樹形結(jié)構(gòu),但是卻將索引和數(shù)據(jù)分開存儲(chǔ),這種索引也叫非聚簇索引。

create table index_demo(
	c1 int,
	c2 int,
	c3 char(1),
	primary key(c1)
) ROW_FORMAT=COMPACT;

將表中的記錄按照記錄的插入順序單獨(dú)存儲(chǔ)在一個(gè)文件中,這個(gè)文件并不劃分為若干個(gè)數(shù)據(jù)頁(yè),有多少記錄就往這個(gè)文件中塞多少個(gè)記錄,這樣一來,我們就可以通過行號(hào)快速訪問到一條記錄。在表中使用MyISAM作為存儲(chǔ)引擎時(shí),它的記錄在存儲(chǔ)空間中的表示如圖:

MySQL中MyISAM存儲(chǔ)引擎的非聚簇索引分析

由于在插入數(shù)據(jù)時(shí)并沒有刻意按照主鍵大小排序,所以我們不能再這些數(shù)據(jù)上使用二分法進(jìn)行查找,使用MyISAM存儲(chǔ)引擎的表會(huì)把索引信息單獨(dú)存儲(chǔ)在另外一個(gè)文件中,稱為索引文件。MyISAM會(huì)為表的主鍵單獨(dú)創(chuàng)建一個(gè)索引,只不過在索引的葉子節(jié)點(diǎn)中存儲(chǔ)的不是完整的用戶記錄,而是主鍵值和行號(hào)的組合。也就是先通過索引找到對(duì)應(yīng)的行號(hào),再通過行號(hào)去找對(duì)應(yīng)的記錄。

MySQL中MyISAM存儲(chǔ)引擎的非聚簇索引分析

在InnoDB存儲(chǔ)引擎中,我們只需要根據(jù)主鍵值對(duì)聚簇索引進(jìn)行一次查找就能找到對(duì)應(yīng)的記錄;在MyISAM存儲(chǔ)引擎中,需要進(jìn)行一次回表操作,這也意味著MyISAM中建立的索引相當(dāng)于全部都是二級(jí)索引。

MyISAM會(huì)直接在索引葉子節(jié)點(diǎn)處存儲(chǔ)該條記錄在數(shù)據(jù)文件中的地址偏移量。由此可以看出MyISAM的回表操作時(shí)十分快速的,因?yàn)樗悄弥刂菲屏恐苯拥轿募腥?shù)據(jù),而InnoDB是通過獲取主鍵之后再去聚簇索引中找記錄,雖然說不慢,但是也比不上直接用地址去訪問。

如果有必要,我們也可以為其他列分別建立索引或者建立聯(lián)合索引,其原理與InnoDB中索引差不多,只不過在葉子節(jié)點(diǎn)處存儲(chǔ)的是相應(yīng)的列+行號(hào),這些索引頁(yè)全部都是二級(jí)索引。

MySQL中MyISAM存儲(chǔ)引擎的非聚簇索引分析

可以看到對(duì)于非聚簇索引,不管是以主鍵為排序規(guī)則還是以非主鍵為排序規(guī)則,它的結(jié)構(gòu)都是相同的,即葉子節(jié)點(diǎn)存放的都是相應(yīng)的列+行號(hào)。

讀到這里,這篇“MySQL中MyISAM存儲(chǔ)引擎的非聚簇索引分析”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI