密集索引和稀疏索引的區別:
- 密集索引文件中的搜索碼值都對應一個索引值
- 稀疏索引文件中只會爲某些索引碼的某些值建立索引項
接下來以MySQL爲例來進行說明:
在MySQL中有兩種搜索引擎:MyISAM和InnoDB
MyISAM引擎:
不管是主鍵索引,唯一鍵索引還是普通索引,其索引都屬於稀疏索引。
InnoDB引擎:
- 若一個主鍵被定義,該主鍵則作爲密集索引
- 若沒有主鍵被定義,該表的第一個唯一非空索引則作爲密集索引
- 若不滿足以上條件,InnoDB內部會生成一個隱藏主鍵(密集索引)
- 非主鍵索引存儲相關鍵位和其對應的主鍵值,包含兩次查找