中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中MyISAM存儲引擎的非聚簇索引分析

發布時間:2022-03-03 09:15:53 來源:億速云 閱讀:167 作者:iii 欄目:開發技術

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

在InnoDB中索引即數據,也就是聚簇索引的那顆B+樹的葉子節點中已經包含了所有完整的用戶記錄。MyISAM的索引方案雖然也是使用樹形結構,但是卻將索引和數據分開存儲,這種索引也叫非聚簇索引。

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

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

MySQL中MyISAM存儲引擎的非聚簇索引分析

由于在插入數據時并沒有刻意按照主鍵大小排序,所以我們不能再這些數據上使用二分法進行查找,使用MyISAM存儲引擎的表會把索引信息單獨存儲在另外一個文件中,稱為索引文件。MyISAM會為表的主鍵單獨創建一個索引,只不過在索引的葉子節點中存儲的不是完整的用戶記錄,而是主鍵值和行號的組合。也就是先通過索引找到對應的行號,再通過行號去找對應的記錄。

MySQL中MyISAM存儲引擎的非聚簇索引分析

在InnoDB存儲引擎中,我們只需要根據主鍵值對聚簇索引進行一次查找就能找到對應的記錄;在MyISAM存儲引擎中,需要進行一次回表操作,這也意味著MyISAM中建立的索引相當于全部都是二級索引。

MyISAM會直接在索引葉子節點處存儲該條記錄在數據文件中的地址偏移量。由此可以看出MyISAM的回表操作時十分快速的,因為它是拿著地址偏移量直接到文件中取數據,而InnoDB是通過獲取主鍵之后再去聚簇索引中找記錄,雖然說不慢,但是也比不上直接用地址去訪問。

如果有必要,我們也可以為其他列分別建立索引或者建立聯合索引,其原理與InnoDB中索引差不多,只不過在葉子節點處存儲的是相應的列+行號,這些索引頁全部都是二級索引。

MySQL中MyISAM存儲引擎的非聚簇索引分析

可以看到對于非聚簇索引,不管是以主鍵為排序規則還是以非主鍵為排序規則,它的結構都是相同的,即葉子節點存放的都是相應的列+行號。

讀到這里,這篇“MySQL中MyISAM存儲引擎的非聚簇索引分析”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淳化县| 安塞县| 保定市| 太仓市| 方正县| 开封县| 霍城县| 神木县| 保定市| 桂东县| 库尔勒市| 胶南市| 贡嘎县| 兖州市| 鞍山市| 黑水县| 庄浪县| 临西县| 舟山市| 武宣县| 六盘水市| 安西县| 晴隆县| 萨迦县| 鹿泉市| 怀宁县| 榆树市| 迁安市| 阜宁县| 阳朔县| 二连浩特市| 德清县| 南投市| 光山县| 满城县| 信阳市| 多伦县| 遵义市| 罗山县| 肇源县| 义马市|