MySQL 表儲存方式之索引組織表和堆表

2021-10-09 15:58:36 字數 506 閱讀 1836

索引組織的表具有b樹的變體的儲存組織。以主鍵排序的方式將索引組織表的資料儲存在b樹索引結構中。索引結構中的每個葉塊都儲存關鍵字列和非關鍵列。對應的主鍵索引也叫聚集索引,其他列的索引叫secondary index,也叫做二級索引。二級索引的每條記錄都包含該行的主鍵值,innodb使用這個主鍵值來搜尋聚集索引中的行。因此,較短的主鍵值是有利的,可以縮小二級索引的空間。

聚集索引 clustered index

每個表都有乙個聚集索引,其實上面所說的主鍵索引也叫聚集索引,嚴格意義上是不正確的。因為:

聚集索引的而葉子節點儲存了行中所有列的資訊,還包括額外的row_id,rollback pointer,trix_id等資訊,這些資訊會在mvcc中用到。

就是一般的表,資料插入時儲存位置是隨機的,主要是資料庫內部塊的空閒位置決定的。

堆表中,主鍵索引和普通索引一樣,葉子節點存放的都是指向堆表中資料的指標(指向實體地址)。

mysql的myisam 和 oracle都支援堆表

mysql堆表和索引組織 堆表與索引組織表

堆表 資料存放在資料裡面,索引存放在索引裡 堆就是無序資料的集合,索引就是將資料變得有序,在索引中鍵值有序,資料還是無序的 堆表中,主鍵索引和普通索引一樣的,葉子節點存放的是指向堆表中資料的指標 可以是乙個頁編號加偏移量 指向實體地址,沒有回表的說法 堆表中,主鍵和普通索引基本上沒區別,和非空的唯一...

Oracle之索引組織表

假設表a,有5個字段,其中有乙個名為id的字段為主鍵。日常業務中,經常需要根據id欄位的值,查詢該錶上其它字段 乙個或多個字段,甚至全部字段 上的值。如果我們只在id列上建立索引,當執行 select id,欄位2,欄位3,from 表a where id 等邏輯操作 時,如果結果集是少數記錄,那麼...

索引組織表

索引組織表 iot 可以將索引和表資料一起儲存在乙個表中,該錶稱為索引組織表.iot是在中儲存整個行的索引,而不僅僅是儲存行的鍵值。行的主鍵作為行的邏輯識別符號而不是儲存行的rowid。iot中沒rowid。由於iot中整個行儲存為索引本身,因此沒有用於每個行的rowid,主鍵用來標識乙個iot中的...