1. 程式人生 > 其它 >mysql中的索引

mysql中的索引

索引

a. 概念

索引是基於資料庫表建立的,它包含一個表中某些列的值以及記錄對應的數值(具體是什麼數值,要看引擎和索引的種類).

b. 作用

在儲存資料時會把資料組織成某種資料結構(通常是B+樹,也可是hash結構,這種結構不支援範圍查詢,所以很少用),查詢時可以利用該資料結構的特性提高查詢速度。-----但無法提高增刪改的效率,會使增刪改變慢,因為索引建立之後需要對索引的b+樹進行維護,每次增刪改都會改變b+樹的結構,從而減慢增刪改的效率。

c.索引的種類

  • 雜湊索引採用雜湊演算法,儲存引擎為memery才使用,把索引列資料換算成雜湊值,檢索時不需要類似B+樹那樣從根節點到葉子節點逐級查詢,只需一次雜湊演算法即可立刻定位到相應的位置,速度非常快,但不適合範圍查詢和排序。--這個用的比較少

  • 聚集索引(innodb)---聚集索引---索引和資料儲存在一個ibd檔案中:聚集索引通常就是主鍵索引,如果沒有定義主鍵索引,但有唯一索引且非空的一個欄位或欄位集(多欄位唯一),則使用該唯一索引作為聚集索引,如果沒有這樣的唯一索引,則會自動產生一個隱藏的索引為gen_clust_index,一個表只能有一個聚集索引,而非聚集索引可以有很多個

    • 主鍵索引:由主鍵約束所產生的索引.

    • 唯一索引:由唯一約束所產生的索引。unique--唯一索引可能是聚集索引,也可能是非聚集索引 

  • 非聚集索引---索引和資料分開儲存,索引檔案myi儲存了索引和機械地址

    • 單值索引:用create index 索引名字 on 表名(欄位)。

    • 複合索引:基於某些列建立索引。create index 索引名 on 表名(欄位1,欄位2);

    • 全文索引:類似於solr,把一篇篇文章儲存在某一列,搜尋時使用全文索引。很少用,>=5.6版本的mysql才支援。