MySQL聚簇索引概念總結

2021-10-08 14:48:30 字數 821 閱讀 2352

利用這篇文章對mysql聚簇索引的一些概念做一些總結,有不對的地方還請各位看官幫忙指正。/手動抱拳

聚簇索引就是每張表構建乙個b+樹,每乙個節點都是一,葉子節點存放的是整張表的行記錄,所以葉子節點也叫資料頁。

頁可以理解為乙個儲存空間,mysql中每一頁大小為16kb(16384)。mysql每次查詢資料時都是以頁為單位取資料到記憶體中,即每次查詢至少取一頁的資料到記憶體,也叫區域性性原則

引用一篇大佬的文章

當一張表的資料頁超過兩頁時(葉子節點數 >= 2),會將原先的資料頁copy乙份,與新頁一起充當葉子節點,第一頁作為根節點,修改根節點。根節點儲存的是每個資料頁的起始主鍵。由於每一頁的page directory中也會存放對應的主鍵,所以聚簇索引中主鍵會有冗餘。

非聚簇索引也是一棵b+樹。我們通常所說的索引都是輔助索引,輔助索引其實就是非聚簇索引,因為其葉子節點並不儲存行記錄,而是儲存主鍵值。當我們使用輔助索引查詢時,其實是先通過非聚簇索引查詢到主鍵值,然後根據主鍵值去聚簇索引中查詢實際的行記錄,這個根據主鍵值去聚簇索引中查詢的過程就叫做回表

注意:我們這裡所說的主鍵值並不一定是mysql表中的主鍵,如果我們沒有建立主鍵,那麼mysql會選擇唯一索引建立b+樹,如果沒有唯一索引,那麼mysql會使用乙個隱藏列,row_id去建立b+樹。

聚簇索引概念

聚簇索引與非聚簇索引 myisam與innodb引擎,索引檔案的異同 innodb的主索引檔案上 直接存放該行資料,稱為聚簇索引,次索引指向對主鍵的引用 myisam中,主索引和次索引,都指向物理行 磁碟位置 注意 innodb來說,1 主鍵索引 既儲存索引值,又在葉子中儲存行的資料 2 如果沒有主...

聚簇索引概念

聚簇索引與非聚簇索引 myisam與innodb引擎,索引檔案的異同 innodb的主索引檔案上 直接存放該行資料,稱為聚簇索引,次索引指向對主鍵的引用 myisam中,主索引和次索引,都指向物理行 磁碟位置 注意 innodb來說,1 主鍵索引 既儲存索引值,又在葉子中儲存行的資料 2 如果沒有主...

mysql 聚簇索引例項 MySQL聚簇索引

mysql作為迭代了很多個版本的資料庫。在資料庫的索引上實現了很多的優化版本,從一開始的只允許乙個表有乙個列為索引值,到目前版本可支援多個列建立索引值,更多關於索引優化版本的描述,以後有機會筆者再寫一篇文章。本文主要介紹索引當中的聚簇索引。mysql官方對聚簇索引的定義是,聚簇索引並不是一種單獨的索...