特色:sql
InnoDB默認爲每一行記錄添加了三個字段:ui
每一個InnoDB表都有一個用來存儲全部行數據的特殊索引:Clustered Index
。全部行數據都是經過聚簇索引來組織存儲的。 一般狀況下,聚簇索引是主鍵的代名詞。指針
若是沒有爲InnoDB表定義一個主鍵,Mysql會選擇表中第一個非空的惟一索引列
作爲聚簇索引。若該表沒有主鍵或合適的惟一索引列,InnoDB內部會在包含row ID的虛擬列上生成一個隱藏的聚簇索引。Row ID的值是根據新插入記錄的順序而單調遞增的。code
官方文檔:索引
If the table has no PRIMARY KEY or suitable UNIQUE index, InnoDB internally generates a hidden clustered index on a synthetic column containing row ID values. Thus, the rows ordered by the row ID are physically in insertion order.事務
除了聚簇索引以外的全部索引稱爲輔助索引。文檔
在InnoDB中,輔助索引的每一條記錄存儲該行的全部主鍵字段,這些主鍵字段。InnoDB使用主鍵的值在聚簇索引中查找對應的記錄。it
transaction ID
字段和7個字節的roll pointer
字段。row ID
字段。覆蓋索引:從輔助索引中就能夠獲得查詢的記錄,而不須要查詢聚簇索引中的記錄。io
使用覆蓋索引的好處: 輔助索引不包含整行記錄的全部字段信息,故其大小遠小於聚簇索引,所以能夠減小大量的IO操做。table
特色: