mysql索引,哈希索引,聚集索引,二級索引

哈希索引

哈希索引,只有精確匹配索引所有列的查詢纔有效,對於每一行數據,存儲引擎都會對所有的索引計算一個哈希碼。哈希索引將所有的哈希碼存儲在索引中,同時在哈希表中保存指向每個數據行的指針。(如果多個列的哈希值相同,索引會以鏈表的方式存放多個指針記錄到同一個哈希條目中。)
因爲索引自身只存儲對應的哈希值,所以索引的結構十分緊湊,哈希索引查找的速度非常快,但是哈希索引也有它的限制:

  • 1、哈希索引不是按照索引順序存儲的,無法用於排序。
  • 2、不支持部分索引列匹配查找。
  • 3、不支持範圍查找。
聚集索引

每個存儲引擎爲InnoDB的表都有一個特殊的索引,叫聚集索引。聚集索引並不是一種單獨的索引類型,而是一種數據存儲方式。當表有聚集索引的時候,它的數據行實際上存放在葉子頁中。一個表不可能有兩個地方存放數據,所以一個表只能有一個聚集索引。
因爲是存儲引擎負責實現索引,因此不是所有的存儲引擎都支持聚集索引。InnoDB表中聚集索引的索引列就是主鍵,所以聚集索引頁叫主鍵索引。

二級索引

對於InnoDB表,在非主鍵列的其他列上建的索引就是二級索引(因爲聚集索引只有一個)。二級索引可以有0個或多個。二級索引的節點頁和聚集索引一樣,只存被索引列的值,而二級索引的葉子頁除了索引列值,還存這一列對應的主鍵值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章