MySQL 聚簇索引和非聚簇索引的認識

來源:互聯網
上載者:User

標籤:查詢   就是   執行   位置   csdn   sam   組織   log   直接   

聚簇索引是對磁碟上實際資料重新組織以按指定的一個或多個列的值排序的演算法。特點是儲存資料的順序和索引順序一致。一般情況下主鍵會預設建立聚簇索引,且一張表只允許存在一個聚簇索引。

在《資料庫原理》一書中是這麼解釋聚簇索引和非聚簇索引的區別的:聚簇索引的葉子節點就是資料節點,而非聚簇索引的葉子節點仍然是索引節點,只不過有指向對應資料區塊的指標。

因此,MYSQL中不同的資料存放區引擎對聚簇索引的支援不同就很好解釋了。下面,我們可以看一下MYSQL中MYISAM和INNODB兩種引擎的索引結構

 

myisam的索引儲存圖如下,可以看出,無論是id還是cat_id,下面都儲存有執行物理地址的值。通過主鍵索引或者次索引來查詢資料的時候,都是先尋找到物理位置,然後再到物理位置上去尋找資料。

 

innodb的索引儲存圖如下,我們會發現,主鍵索引下面直接儲存有資料,而次索引下,儲存的是主鍵的id。通過主鍵尋找資料的時候,就會很快尋找到資料,但是通過次索引尋找資料的時候,需要先尋找到對應的主鍵id,然後才能尋找到對應的資料。

 

nnodb的主索引檔案上 直接存放該行資料,稱為聚簇索引,次索引指向對主鍵的引用
myisam中, 主索引和次索引,都指向物理行(磁碟位置).

注意: innodb來說, 
1: 主鍵索引 既儲存索引值,又在葉子中儲存行的資料
2: 如果沒有主鍵, 則會Unique key做主鍵 
3: 如果沒有unique,則系統產生一個內部的rowid做主鍵.
4: 像innodb中,主鍵的索引結構中,既儲存了主索引值,又儲存了行資料,這種結構稱為”聚簇索引”

MySQL 聚簇索引和非聚簇索引的認識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.