搞懂MySQL(各種)索引型別及其區別
阿新 • • 發佈:2022-03-09
索引的概念介紹:
1、聚集索引
聚集索引:指索引項的排序方式和表中資料記錄排序方式一致的索引 也就是說聚集索引的順序就是資料的物理儲存順序。它會根據聚集索引鍵的順序來儲存表中的資料,即對錶的資料按索引鍵的順序進行排序,然後重新儲存到磁碟上。因為資料在物理存放時只能有一種排列方式,所以一個表只能有一個聚集索引。 比如字典中,用‘拼音’查漢字,就是聚集索引。因為正文中字都是按照拼音排序的。而用‘偏旁部首’查漢字,就是非聚集索引,因為正文中的字並不是按照偏旁部首排序的,我們通過檢字表得到正文中的字在索引中的對映,然後通過對映找到所需要的字。 聚集索引的使用場合為: a.查詢命令的回傳結果是以該欄位為排序依據的; b.查詢的結果返回一個區間的值; c.查詢的結果返回某值相同的大量結果集。 聚集索引會降低 insert,和update操作的效能,所以,是否使用聚集索引要全面衡量。2、非聚集索引
3、聚簇索引
聚簇索引並不是一種單獨的索引型別,而是一種資料儲存方式。術語“聚族”表示資料行和相鄰的鍵值緊湊的儲存在一起。因為無法同時把資料行放在兩個不同的地方,所以一個表只能有一個聚族索引。 聚族索引的優點 可以把相關資料儲存在一起。就好像在操場上戰隊,一個院系一個院系的站在一起,這樣要找到一個人,就先找到他的院系,然後在他的院系裡找到他就行了,而不是把學校裡的所有人都遍歷一遍 資料訪問更快。聚族索引將索引和資料儲存在同一個B-Tree中,因此從聚族索引中獲取資料通常比在非聚族索引中查詢更快4、稠密索引
5、覆蓋索引
如果一個索引包含(或覆蓋)所有查詢需要的欄位的值,就成為覆蓋索引。覆蓋索引只需要掃描索引,不需要回表查詢,能極大的提升效能。
有幾點好處:
1.極大的減少資料訪問量。
2.索引按照列值順序儲存,io密集型的範圍查詢比隨機磁碟IO讀取小的多。
3.由於InnoDB的聚簇索引,覆蓋索引對InnoDB表特別有用。
注:當使用覆蓋索引時,從的EXPLAIN 的extra列可以看到“Using index”的資訊。