【MySql】mysql中的聚集索引和非聚集索引

    如果表中一條記錄佔用磁盤1000個字節的話,對其中一個10個字節的字段建立索引,那麼該記錄對應的索引快的大小隻有10個字節。瞭解到數據庫中最小的空間單元是頁,一個頁在磁盤上佔用8k,那麼這個頁就可以記錄8條字段記錄,可以存儲800條索引。如果我們要從8000條記錄的表中檢索符合某個條件記錄的話,如果沒有索引的話,需要遍歷8000條*1000字節/8k=1000個頁面。如果有索引的話,則查詢8000條*10字節/8k=10個頁面就可以了

    索引中的頁和區

    SQL中存儲數據的基礎單位就是頁,一個頁的大小爲8k,數據庫可以將數據從邏輯上分成頁,磁盤的io操作,就是在頁級別執行。           

        

一個頁一般就包括上述的幾個部分,標頭、數據行、可用空間。

        一個區包含8個頁,它是管理空間的單位。

 

    聚集索引

    索引中的底層節點稱爲葉子節點,根節點與葉節點之間任何索引級別稱爲中間級。在聚集索引中,葉節點包含基礎表的數據頁。根節點和中間級節點包含有索引行和索引頁。每個索引行包含一個鍵值和一個指針。該指針指向B-樹上的某一中間級頁或葉級索引中的某個數據行,每級索引中的頁均被鏈接在雙向連列表中。



   非聚集索引


聚集索引和非聚集索引的區別:

         聚集索引一個表只能有一個,而非聚集索引一個表可以存在多個。

         聚集索引存儲記錄是物理上連續存在,而非聚集索引是邏輯上的連續,物理存儲並不連續。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章