天天看點

mysql 聚集索引如何建立

  mysql索引是一個排好序的資料結構,mysql底層選用的是B+樹結構,會自動将索引從左往右從小到大依次排好序,如下圖:

  

mysql 聚集索引如何建立

  看葉子節點,可以發現是從左到右從小到大排好序的結構。(注:如果使用的是字元串,它會根據ASCII碼值比較大小)

  mysql索引類别主要是更每張表選擇的引擎有關,主要常用InnoDB、MyISAM引擎。

  聚集索引

  聚集索引就是使用的InnoDB引擎,在B+樹葉子節點裡面存儲索引時會将這一整條資料的内容都會存在這裡,這就是聚集索引;

  非聚集索引

  非聚集索引就是使用的MyISAM引擎,在B+樹葉子節點裡面存儲索引時會将這一整條資料的位址存在這裡,再根據查詢出來的位址再磁盤上去尋找資料,這就是聚集索引;

  聚集索引和非聚集索引其實從mysql安裝的data檔案下的存的表結構就能發現一些東西,如下圖:

  

mysql 聚集索引如何建立

  我們會發現使用InnoDB引擎建的表在我們的磁盤上有兩個檔案,一個.frm和.idb。.frm存儲的是表結構,而.idb存儲的是索引和資料;我們再看使用MyISAM建的表,在磁盤上有三個檔案,.frm還是存儲結構的,.MYI是存儲索引的,.MYD是存儲資料的。我們從這裡也是能大概區分到聚集索引和非聚集索引的差別。