如果表中一條記錄佔用磁盤1000個字節的話,對其中一個10個字節的字段建立索引,那麼該記錄對應的索引快的大小隻有10個字節。瞭解到數據庫中最小的空間單元是頁,一個頁在磁盤上佔用8k,那麼這個頁就可以記錄8條字段記錄,可以存儲800條索引。如果我們要從8000條記錄的表中檢索符合某個條件記錄的話,如果沒有索引的話,需要遍歷8000條*1000字節/8k=1000個頁面。如果有索引的話,則查詢8000條*10字節/8k=10個頁面就可以了
索引中的頁和區
SQL中存儲數據的基礎單位就是頁,一個頁的大小爲8k,數據庫可以將數據從邏輯上分成頁,磁盤的io操作,就是在頁級別執行。
一個頁一般就包括上述的幾個部分,標頭、數據行、可用空間。
一個區包含8個頁,它是管理空間的單位。
聚集索引
索引中的底層節點稱爲葉子節點,根節點與葉節點之間任何索引級別稱爲中間級。在聚集索引中,葉節點包含基礎表的數據頁。根節點和中間級節點包含有索引行和索引頁。每個索引行包含一個鍵值和一個指針。該指針指向B-樹上的某一中間級頁或葉級索引中的某個數據行,每級索引中的頁均被鏈接在雙向連列表中。
聚集索引和非聚集索引的區別:
聚集索引一個表只能有一個,而非聚集索引一個表可以存在多個。
聚集索引存儲記錄是物理上連續存在,而非聚集索引是邏輯上的連續,物理存儲並不連續。