- bTree+只有葉子節點存放數據,非葉子節點存放鍵值+指針
- bTree+包含了順序,用二分查找法進行搜索,所以用自增id有很大好處:新索引在索引右邊插入即可,不需要對葉子節點進行挪動(當前頁數據剛好滿時,甚至需要對頁分裂)
- 主鍵索引(聚簇索引)中包含了整行的完整數據;非主鍵索引(二級索引)最終指向改行數據的主鍵Id;所以開發中提倡多用getEntityById這樣的實體訪問,訪問性能最佳
- 非主鍵索引,先找到pk,然後從pk加載對應的數據(回表操作)
- 主鍵索引和非主鍵索引數據,平時都存儲在磁盤文件中;根據內存分配大小和訪問策略,熱數據駐留在緩存innodb_buffer_pool中,緩存起來
- 爲什麼不用bTree: 因爲B樹不管葉子節點還是非葉子節點,都會保存數據,這樣導致在非葉子節點中能保存的指針數量變少(有些資料也稱爲扇出),指針少的情況下要保存大量數據,只能增加樹的高度,導致IO操作變多,查詢性能變低