堆表 :
- 堆就是無序數據的集合,索引就是將數據變得有序,在索引中鍵值有序,數據還是無序的
- 數據存放在數據里面,索引存放在索引里
- 堆表中,主鍵索引和普通索引一樣的,葉子節點存放的是指向堆表中數據的指針(可以是一個頁編號加偏移量),指向物理地址,沒有回表的說法
- 堆表中,主鍵和普通索引基本上沒區別,和非空的唯一索引沒區別
- mysql 的 myisam 引擎,oracle pg 都支持的是堆表
索引組織表:
- innodb 引擎支持的就是索引組織表
- 對於主鍵的索引,頁子節點存放了一整行所有數據,其他索引稱為輔助索引(二級索引),它的頁子節點只是存放了鍵值和主鍵值
- 主鍵包含了一張表的所有數據,因為主鍵索引的頁子節點中保存了每一行的完整記錄,包括所有列。如果沒有主鍵,MySQL會自動幫你加一個主鍵,但是對用戶不可見
- innodb中數據存放在聚集索引中,換言之,按照主鍵的方式來組織數據的
- 其他索引(唯一索引,普通索引)的頁子節點存放該索引列的鍵值和主鍵值
- 不管是什么索引非頁子節點存放的存放的就是鍵值和指針,不存數據,這個指針在innodb中是6個bit,鍵值就看數據大小了