MyISAM和InnoDB 索引區別

首先咱們知道MyISM和InnoDB索引都是由B+樹實現的,但在索引管理數據方式上卻有所不一樣。spa

  InnoDB是彙集索引,數據文件是和(主鍵)索引綁在一塊兒的,即索引 + 數據 = 整個表數據文件,經過主鍵索引到整個記錄,必需要有主鍵,經過主鍵索引效率很高。可是輔助索引須要兩次查詢,由於輔助索引是以建索引的字段爲關鍵字索引到主鍵,因此須要兩次,先查詢到主鍵,而後再經過主鍵查詢到數據。所以,主鍵不該該過大,由於主鍵太大,其餘索引也都會很大。話很少說上圖:指針

  主鍵索引:以主鍵索引到整條記錄blog

  輔助索引:以另外一字段索引到主鍵索引

        MyISAM是非彙集索引,也是使用B+Tree做爲索引結構,索引和數據文件是分離的,索引保存的是數據文件的指針。主鍵索引和輔助索引是獨立的。也就是說:InnoDB的B+樹主鍵索引的葉子節點就是數據文件,輔助索引的葉子節點是主鍵的值;而MyISAM的B+樹主鍵索引和輔助索引的葉子節點都是數據文件的地址指針。rem

  主鍵索引:以關鍵字索引到記錄的地址it

  輔助索引:以某字段索引到記錄地址class

  

  從索引實現方面咱們也能夠看出來InnoDB表數據文件自己就是索引文件,他們是一個總體,而對於MyISAM來講數據文件和索引文件則是分開的。效率

相關文章
相關標籤/搜索