mysql索引介紹

你知道m(xù)ysql索引有哪些嗎江掩?大家肯定都能霹靂啪啦地說出聚簇索引学辱、主鍵索引乘瓤、二級(jí)索引、普通索引策泣、唯一索引衙傀、hash索引、B+樹索引等等萨咕。

把所有類型的索引放在一起大家不便于理解统抬,我們可以按照特性將索引可以大致的分一下類,我們可以按照兩個(gè)角度來分類索引

  • 按「數(shù)據(jù)結(jié)構(gòu)」分類:B+tree索引危队、Hash索引聪建、Full-text索引。
  • 按「索引特點(diǎn)」分類:主鍵索引茫陆、唯一索引金麸、普通索引、聯(lián)合索引

重點(diǎn)介紹

本文著重圍繞B+tree索引來介紹簿盅,其他的兩種數(shù)據(jù)結(jié)構(gòu)的索引贊不討論挥下。

B+tree其實(shí)是一種多叉樹結(jié)構(gòu),葉子節(jié)點(diǎn)存放數(shù)據(jù)桨醋,非葉子節(jié)點(diǎn)只存放索引棚瘟,
而且每個(gè)節(jié)點(diǎn)里的數(shù)據(jù)是按主鍵順序存放的。每一層父節(jié)點(diǎn)的索引值都會(huì)出現(xiàn)在下層子節(jié)點(diǎn)的索引值中讨盒,因此在葉子節(jié)點(diǎn)中解取,包括了所有的索引值信息,并且每一個(gè)葉子節(jié)點(diǎn)都有兩個(gè)指針返顺,分別指向下一個(gè)葉子節(jié)點(diǎn)和上一個(gè)葉子節(jié)點(diǎn)禀苦,形成一個(gè)雙向鏈表。如下圖是主鍵索引B+tree結(jié)構(gòu)


未命名 (1).png

這種結(jié)構(gòu)有什么優(yōu)點(diǎn)呢遂鹊?

  1. 相對(duì)于二叉樹來說它更扁平振乏,也意味查詢數(shù)據(jù)產(chǎn)生的IO次數(shù)會(huì)更少,3-4層能輕松容納千萬級(jí)別數(shù)據(jù)
  2. 相對(duì)于B樹結(jié)構(gòu)秉扑,B+Tree 只在葉子節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)慧邮,而 B 樹 的非葉子節(jié)點(diǎn)也要存儲(chǔ)數(shù)據(jù),所以 B+Tree 的單個(gè)節(jié)點(diǎn)的數(shù)據(jù)量更小舟陆,在相同的磁盤 I/O 次數(shù)下误澳,就能查詢更多的節(jié)點(diǎn)。另外秦躯,B+Tree 葉子節(jié)點(diǎn)采用的是雙鏈表連接忆谓,適合 MySQL 中常見的基于范圍的順序查找,而 B 樹無法做到這一點(diǎn)踱承。

索引特點(diǎn)

1.主鍵索引

主鍵索引就是建立在主鍵字段上的索引倡缠,通常在創(chuàng)建表的時(shí)候一起創(chuàng)建哨免,一張表最多只有一個(gè)主鍵索引,索引列的值不允許有空值

2.唯一索引建

唯一索引建立在 UNIQUE 字段上的索引昙沦,一張表可以有多個(gè)唯一索引琢唾,索引列的值必須唯一,但是允許有空值

3.普通索引

普通索引就是建立在普通字段上的索引盾饮,既不要求字段為主鍵采桃,也不要求字段為 UNIQUE

4.前綴索引

前綴索引是指對(duì)字符類型字段的前幾個(gè)字符建立的索引,而不是在整個(gè)字段上建立的索引丘损,前綴索引可以建立在字段類型為 char芍碧、 varchar、binary号俐、varbinary 的列上。使用前綴索引的目的是為了減少索引占用的存儲(chǔ)空間定庵,提升查詢效率

5.聯(lián)合索引

通過將多個(gè)字段組合成一個(gè)索引吏饿,該索引就被稱為聯(lián)合索引,使用聯(lián)合索引時(shí)蔬浙,存在最左匹配原則猪落,也就是按照最左優(yōu)先的方式進(jìn)行索引的匹配。在使用聯(lián)合索引進(jìn)行查詢的時(shí)候畴博,如果不遵循「最左匹配原則」笨忌,聯(lián)合索引會(huì)失效,這樣就無法利用到索引快速查詢的特性了俱病。常見的優(yōu)化方式官疲,將查詢的列放到聯(lián)合索引中可以避免回表來提升性能,注意這個(gè)查詢列需要避免過長(zhǎng)的字段亮隙,否則會(huì)導(dǎo)致索引文件過大降低IO性能

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末途凫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子溢吻,更是在濱河造成了極大的恐慌维费,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件促王,死亡現(xiàn)場(chǎng)離奇詭異犀盟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蝇狼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門阅畴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人题翰,你說我怎么就攤上這事恶阴≌┦ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵冯事,是天一觀的道長(zhǎng)焦匈。 經(jīng)常有香客問我,道長(zhǎng)昵仅,這世上最難降的妖魔是什么缓熟? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮摔笤,結(jié)果婚禮上够滑,老公的妹妹穿的比我還像新娘。我一直安慰自己吕世,他們只是感情好彰触,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著命辖,像睡著了一般况毅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尔艇,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天尔许,我揣著相機(jī)與錄音,去河邊找鬼终娃。 笑死味廊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棠耕。 我是一名探鬼主播余佛,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼窍荧!你這毒婦竟也來了衙熔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤搅荞,失蹤者是張志新(化名)和其女友劉穎红氯,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咕痛,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡痢甘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茉贡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塞栅。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腔丧,靈堂內(nèi)的尸體忽然破棺而出放椰,到底是詐尸還是另有隱情作烟,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布砾医,位于F島的核電站拿撩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏如蚜。R本人自食惡果不足惜压恒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望错邦。 院中可真熱鬧探赫,春花似錦、人聲如沸撬呢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)魂拦。三九已至讨勤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晨另,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工谱姓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留借尿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓屉来,卻偏偏與公主長(zhǎng)得像路翻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茄靠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容