密集索引和稀疏索引的區別

2021-09-25 16:48:43 字數 433 閱讀 5516

密集索引檔案中每乙個搜尋碼值都對應乙個索引值,就是葉子節點儲存的不只是鍵值,還儲存了位於同一行記錄裡的其他列的資訊,由於密集索引決定了表的物理排列順序,乙個表只有乙個物理排列順序,所以乙個表只能建立乙個密集索引

稀疏索引檔案只為索引碼的某些值建立索引項, 比如 innodb的其他索引只存了鍵位資訊和主鍵, myisam的所有索引都是

如果乙個主鍵被定義了,那麼這個主鍵就是作為密集索引

如果主鍵沒有被定義,那麼該表中第乙個唯一非空的索引則作為密集索引

如果不滿足以上條件,innodb內部會生成隱藏主鍵作為密集索引

非主鍵索引儲存相關鍵位何其對應的主鍵值,包含兩次查詢

不管是主鍵索引,唯一鍵索引,還是普通索引都是稀疏索引

簡單分析下密集索引和稀疏索引的區別

首先先來了解下什麼是索引項 索引值 搜尋碼 索引項包括索引值以及指向該搜尋碼值的第一條資料記錄的指標。從上圖中可以看出 一 密集索引檔案中的每乙個搜尋碼值都對應著乙個索引值 這就可以理解為葉子結點不但需要儲存鍵值 還儲存位於同一行記錄的其他列資訊。由於密集索引決定了表的物理排列順序,乙個表只有乙個物...

索引4 密集索引與稀疏索引

u密集索引與稀疏索引區別 秘籍索引檔案中的每個搜尋碼值都對應乙個索引值 稀疏索引檔案只為索引碼的某些值建立索引項 密集索引的定義 葉子節點儲存的不只是鍵值,還儲存了位於同一行記錄裡的其他列的資訊,由於密集索引決定了表的物理排列順序,乙個表只有乙個物理排列順序,所以乙個表只能建立乙個密集索引 稀疏索引...

mysql 稀疏 稀疏索引和稠密索引你了解嗎?

背景 最近參加了乙個面試,面試官先問了mysql的資料庫的索引的底層資料介面,我回答了 平時都用的是innodb引擎,所以其底層的索引資料型別是b 樹。面試官問我用沒用過稀疏索引。當時就懵了,聚集索引,非聚集索引,主鍵索引,覆蓋索引等等,我也沒聽過什麼是稀疏索引。我反問了一下 面試官這個索引型別是m...