聚簇索引的葉子節點就是資料節點,主鍵就是聚簇索引,乙個表就乙個主鍵,乙個表也就乙個聚簇索引。
非聚簇索引(二級索引)的葉子節點存的是主鍵索引,所以查詢未使用覆蓋索引時,儲存引擎需要先找到二級索引葉子節點對應的主鍵值,然後通過聚簇索引找到目標行記錄,即回表操作。
這裡順便提一下覆蓋索引,我們知道索引節點本身其實也是資料,如果我們只需要索引節點資料(只需要索引字段,不需要其他非索引字段),那查詢時就可以直接返回索引節點資料,而不需要再回表。
下面我們對比一下innodb和myisam兩個儲存引擎的資料分布。innodb有關資料的儲存檔案只有乙個.idb檔案,而myisam包含.myi和.myd兩個檔案。
myisam按照資料插入的順序儲存在磁碟上,so很容易建立索引,邏輯上找到行號就可以定位到行記錄,所以myisam主鍵索引和普通索引結構上沒什麼區別,都是索引節點記錄資料位址。索引和資料檔案分離,非聚簇索引。
MySQL 聚簇索引 和 非聚簇索引
索引節點的葉子頁面就好比一片葉子。葉子頭便是索引鍵值。先建立一張表 create table user id intnot null name varchar notnull class varchar notnull 對於myisam引擎,如果建立 id 和 name 為索引。對於下面查詢 sel...
MySQL聚簇索引和非聚簇索引
聚簇索引是指葉子節點儲存的是一整行記錄,比如innodb的主鍵索引,主鍵和表資料儲存在一起。聚簇索引並不是一種單獨的索引型別,而是一種資料儲存方式,因為一行資料不能同時儲存在兩個地方,所以一張表中只能有乙個聚簇索引,因為一張表的資料儲存順序只能是一種,故只有innodb主鍵索引是聚簇索引。聚簇索引的...
聚簇索引和非聚簇索引
一 聚簇索引 clustered indexes 的使用 聚簇索引是一種對磁碟上實際資料重新組織以按指定的乙個或多個列的值排序。由於聚簇索引的索引頁面指標指向資料頁面,所以使用聚簇索引查詢資料幾 乎總是比使用非聚簇索引快。每張表只能建乙個聚簇索引,並且建聚簇索引需要至少相當該錶120 的附加空間,以...