MySQL索引分類

概述

本文主要介紹MySQL數(shù)據(jù)庫的索引分類胡本。由于不同的分類角度導(dǎo)致容易混淆既们。


按數(shù)據(jù)結(jié)構(gòu)劃分

  • hash索引

    MySQL并沒有顯式支持Hash索引,而是作為內(nèi)部的一種優(yōu)化庶香。具體在Innodb存儲引擎里四敞,會監(jiān)控對表上二級索引的查找泛源,如果發(fā)現(xiàn)某二級索引被頻繁訪問,二級索引成為熱數(shù)據(jù)忿危,就為之建立hash索引达箍。因此,在MySQL的Innodb里铺厨,對于熱點的數(shù)據(jù)會自動生成Hash索引缎玫。這種hash索引硬纤,根據(jù)其使用的場景特點,也叫自適應(yīng)Hash索引赃磨。

  • B+樹索引

    這個是MySQL索引的基本實現(xiàn)方式筝家。Innodb、MyISAM的索引都是通過B+樹實現(xiàn)的邻辉。


按索引字段個數(shù)劃分

  • 單值索引

    僅包含一個字段值得索引溪王,稱為單值索引。

  • 復(fù)核索引

    包含多個字段構(gòu)成的索引值骇,成為復(fù)核索引莹菱。復(fù)合索引的索引的數(shù)據(jù)順序跟字段的順序相關(guān),包含多個值的索引中吱瘩,如果當(dāng)前面字段的值重復(fù)時道伟,將會按照其后面的值進行排序。

    如果查詢條件中字段包含了復(fù)核索引中的字段使碾,優(yōu)化器也會按照索引字段順序進行解析蜜徽。單如果是不連續(xù)的則無法完全利用索引。比如建立(a,b,c)的復(fù)核索引部逮,如果查找條件為(a,c),則只能利用a的索引娜汁。


按是否是主鍵劃分

  • 主鍵索引

    MySQL中是根據(jù)主鍵來組織數(shù)據(jù)的,所以每張表都必須有主鍵索引兄朋,主鍵索引只能有一個,不能為null同時必須保證唯一性怜械。建表時如果沒有指定主鍵索引颅和,則會自動生成一個隱藏的字段作為主鍵索引。

  • 輔助索引/二級索引

    如果不是主鍵索引缕允,則就可以稱之為非主鍵索引峡扩,又可以稱之為輔助索引或者二級索引。主鍵索引的葉子節(jié)點存儲了完整的數(shù)據(jù)行障本,而非主鍵索引的葉子節(jié)點存儲的則是主鍵索引值教届。

    通過非主鍵索引查詢數(shù)據(jù)時,會先查找到主鍵索引值驾霜,然后再到主鍵索引上去查找對應(yīng)的數(shù)據(jù)案训。這也是不建議主鍵太長的原因,因為所有輔助索引都會存儲主鍵粪糙。

索引是否包括返回值

  • 覆蓋索引

    在這里假設(shè)我們有張表user强霎,具有三列:ID,age蓉冈,name城舞,create_time轩触,id是主鍵,(age家夺,create_time,脱柱,name)建立輔助索引。

    執(zhí)行如下sql語句

    select name from user where age>2 order by create_time desc拉馋。
    

    正常的話榨为,查詢分兩步:

    1 按照輔助索引,查找到記錄的主鍵

    2 按照主鍵主鍵索引里查找記錄椅邓,返回name柠逞。

    但實際上,我們可以看到景馁,輔助索引節(jié)點是按照age板壮,create_time,name建立的合住,索引信息里完全包含我們所要的信息绰精,如果能從輔助索引里返回name信息,則第二步是完全沒有必要的透葛,可以極大提升查詢速度笨使。

    按照這種思想Innodb里針對使用輔助索引的查詢場景做了優(yōu)化,叫覆蓋索引僚害。


索引與數(shù)據(jù)的存儲關(guān)聯(lián)性

  • 聚簇索引

    Innodb中的主鍵索引(B+樹索引)結(jié)構(gòu)中硫椰,非葉子節(jié)點存儲的是索引指針,葉子節(jié)點存儲的是既有索引也有整行數(shù)據(jù)萨蚕。索引和數(shù)據(jù)是存儲在一起的靶草,是典型的聚簇索引。

  • 非聚簇索引

    innodb中的輔助索引結(jié)構(gòu)中岳遥,葉子節(jié)點存儲的是主鍵索引值奕翔,并沒有完整數(shù)據(jù),所以為非聚簇索引浩蓉。

    MyISAM中索引和數(shù)據(jù)文件分開存儲派继,B+Tree的葉子節(jié)點存儲的是數(shù)據(jù)存放的地址,而不是具體的數(shù)據(jù)捻艳,是典型的非聚簇索引驾窟;換言之,數(shù)據(jù)可以在磁盤上隨便找地方存讯泣,索引也可以在磁盤上隨便找地方存纫普,只要葉子節(jié)點記錄對了數(shù)據(jù)存放地址就行。因此,索引存儲順序和數(shù)據(jù)存儲關(guān)系毫無關(guān)聯(lián)昨稼,是典型的非聚簇索引节视。

其他分類

  • 全文索引
  • 唯一索引:索引唯一。

參考文章:騰訊云數(shù)據(jù)庫公眾號

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末假栓,一起剝皮案震驚了整個濱河市寻行,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匾荆,老刑警劉巖拌蜘,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異牙丽,居然都是意外死亡简卧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門烤芦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來举娩,“玉大人,你說我怎么就攤上這事构罗⊥妫” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵遂唧,是天一觀的道長芙代。 經(jīng)常有香客問我,道長盖彭,這世上最難降的妖魔是什么纹烹? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮召边,結(jié)果婚禮上滔韵,老公的妹妹穿的比我還像新娘。我一直安慰自己掌实,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布邦马。 她就那樣靜靜地躺著贱鼻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滋将。 梳的紋絲不亂的頭發(fā)上邻悬,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音随闽,去河邊找鬼父丰。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛾扇。 我是一名探鬼主播攘烛,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼镀首!你這毒婦竟也來了坟漱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤更哄,失蹤者是張志新(化名)和其女友劉穎芋齿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體成翩,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡觅捆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了麻敌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栅炒。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖庸论,靈堂內(nèi)的尸體忽然破棺而出职辅,到底是詐尸還是另有隱情,我是刑警寧澤聂示,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布域携,位于F島的核電站,受9級特大地震影響鱼喉,放射性物質(zhì)發(fā)生泄漏秀鞭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一扛禽、第九天 我趴在偏房一處隱蔽的房頂上張望锋边。 院中可真熱鬧,春花似錦编曼、人聲如沸豆巨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽往扔。三九已至,卻和暖如春熊户,著一層夾襖步出監(jiān)牢的瞬間萍膛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工嚷堡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝗罗,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像串塑,于是被迫代替她去往敵國和親沼琉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354