MySQL面試題 | 附答案解析(七)

21. B+樹在滿足聚簇索引和覆蓋索引的時(shí)候不需要回表查詢數(shù)據(jù)

在B+樹的索引中表窘,葉子節(jié)點(diǎn)可能存儲了當(dāng)前的key值集惋,也可能存儲了當(dāng)前的key值以及整行的數(shù)據(jù)怔软,這就是聚簇索引和非聚簇索引姜性。在InnoDB中猪叙,只有主鍵索引是聚簇索引赘风,如果沒有主鍵夹囚,則挑選一個(gè)唯一鍵建立聚簇索引。如果沒有唯一鍵邀窃,則隱式的生成一個(gè)鍵來建立聚簇索引崔兴。

當(dāng)查詢使用聚簇索引時(shí),在對應(yīng)的葉子節(jié)點(diǎn),可以獲取到整行數(shù)據(jù)敲茄,因此不用再次進(jìn)行回表查詢位谋。

22. 什么是聚簇索引?何時(shí)使用聚簇索引與非聚簇索引

(1)聚簇索引:將數(shù)據(jù)存儲與索引放到了一塊堰燎,找到索引也就找到了數(shù)據(jù)

(2)非聚簇索引:將數(shù)據(jù)存儲于索引分開結(jié)構(gòu)掏父,索引結(jié)構(gòu)的葉子節(jié)點(diǎn)指向了數(shù)據(jù)的對應(yīng)行,myisam通過key_buffer把索引先緩存到內(nèi)存中秆剪,當(dāng)需要訪問數(shù)據(jù)時(shí)(通過索引訪問數(shù)據(jù))赊淑,在內(nèi)存中直接搜索索引,然后通過索引找到磁盤相應(yīng)數(shù)據(jù)仅讽,這也就是為什么索引不在key buffer命中時(shí)陶缺,速度慢的原因

(3)澄清一個(gè)概念:innodb中,在聚簇索引之上創(chuàng)建的索引稱之為輔助索引洁灵,輔助索引訪問數(shù)據(jù)總是需要二次查找饱岸,非聚簇索引都是輔助索引,像復(fù)合索引徽千、前綴索引苫费、唯一索引,輔助索引葉子節(jié)點(diǎn)存儲的不再是行的物理位置双抽,而是主鍵值

何時(shí)使用聚簇索引與非聚簇索引

23. 非聚簇索引一定會回表查詢嗎百框?

不一定,這涉及到查詢語句所要求的字段是否全部命中了索引牍汹,如果全部命中了索引铐维,那么就不必再進(jìn)行回表查詢。

舉個(gè)簡單的例子慎菲,假設(shè)我們在員工表的年齡上建立了索引嫁蛇,那么當(dāng)進(jìn)行select age from employee where age < 20的查詢時(shí),在索引的葉子節(jié)點(diǎn)上钧嘶,已經(jīng)包含了age信息棠众,不會再次進(jìn)行回表查詢琳疏。

24. 聯(lián)合索引是什么有决?為什么需要注意聯(lián)合索引中的順序?

MySQL可以使用多個(gè)字段同時(shí)建立一個(gè)索引空盼,叫做聯(lián)合索引书幕。在聯(lián)合索引中,如果想要命中索引揽趾,需要按照建立索引時(shí)的字段順序挨個(gè)使用台汇,否則無法命中索引。

具體原因?yàn)?

(1)MySQL使用索引時(shí)需要索引有序,假設(shè)現(xiàn)在建立了"name苟呐,age痒芝,school"的聯(lián)合索引,那么索引的排序?yàn)? 先按照name排序牵素,如果name相同严衬,則按照age排序,如果age的值也相等笆呆,則按照school進(jìn)行排序请琳。

(2)當(dāng)進(jìn)行查詢時(shí),此時(shí)索引僅僅按照name嚴(yán)格有序赠幕,因此必須首先使用name字段進(jìn)行等值查詢俄精,之后對于匹配到的列而言,其按照age字段嚴(yán)格有序榕堰,此時(shí)可以使用age字段用做索引查找竖慧,以此類推。因此在建立聯(lián)合索引的時(shí)候應(yīng)該注意索引列的順序局冰,一般情況下测蘑,將查詢需求頻繁或者字段選擇性高的列放在前面。此外可以根據(jù)特例的查詢或者表結(jié)構(gòu)進(jìn)行單獨(dú)的調(diào)整康二。

最后碳胳,小編分類整理了許多java進(jìn)階學(xué)習(xí)材料和BAT面試給熱愛IT行業(yè)的你,如果需要資料的請轉(zhuǎn)發(fā)此文章后再私聊小編回復(fù)【java】就能領(lǐng)取2019年java進(jìn)階學(xué)習(xí)資料和BAT面試題以及《Effective Java》(第3版)電子版書籍沫勿。也可以加群:712263501領(lǐng)取海量學(xué)習(xí)資料進(jìn)行學(xué)習(xí)挨约。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市产雹,隨后出現(xiàn)的幾起案子诫惭,更是在濱河造成了極大的恐慌,老刑警劉巖蔓挖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夕土,死亡現(xiàn)場離奇詭異,居然都是意外死亡瘟判,警方通過查閱死者的電腦和手機(jī)怨绣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拷获,“玉大人篮撑,你說我怎么就攤上這事〈夜希” “怎么了赢笨?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵未蝌,是天一觀的道長。 經(jīng)常有香客問我茧妒,道長萧吠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任桐筏,我火速辦了婚禮怎憋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘九昧。我一直安慰自己绊袋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布铸鹰。 她就那樣靜靜地躺著癌别,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹋笼。 梳的紋絲不亂的頭發(fā)上展姐,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機(jī)與錄音剖毯,去河邊找鬼圾笨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛逊谋,可吹牛的內(nèi)容都是我干的擂达。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼胶滋,長吁一口氣:“原來是場噩夢啊……” “哼板鬓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起究恤,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤俭令,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后部宿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抄腔,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年理张,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赫蛇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涯穷,死狀恐怖棍掐,靈堂內(nèi)的尸體忽然破棺而出藏雏,到底是詐尸還是另有隱情拷况,我是刑警寧澤作煌,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站赚瘦,受9級特大地震影響粟誓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜起意,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一鹰服、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揽咕,春花似錦悲酷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛹头,卻和暖如春顿肺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渣蜗。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工屠尊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耕拷。 一個(gè)月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓讼昆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骚烧。 傳聞我的和親對象是個(gè)殘疾皇子控淡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

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

  • MySQL性能調(diào)優(yōu) 索引 索引是什么 官方介紹索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。筆者理解索引相當(dāng)于一本書...
    陳小陌丿閱讀 1,399評論 0 4
  • 11. 創(chuàng)建索引時(shí)需要注意什么止潘? [if !supportLists]·[endif]非空字段:應(yīng)該指定列為NOT...
    newer大俠閱讀 338評論 0 0
  • 索引 數(shù)據(jù)庫中的查詢操作非常普遍凭戴,索引就是提升查找速度的一種手段 索引的類型 從數(shù)據(jù)結(jié)構(gòu)角度分 1.B+索引:傳統(tǒng)...
    一凡呀閱讀 2,886評論 0 8
  • 說到索引涧狮,很多人都知道“索引是一個(gè)排序的列表,在這個(gè)列表中存儲著索引的值和包含這個(gè)值的數(shù)據(jù)所在行的物理地址么夫,在數(shù)據(jù)...
    愛情小傻蛋閱讀 679評論 2 2
  • 作者:呼延十鏈接:https://juejin.im/post/5d351303f265da1bd30596f9 ...
    碼農(nóng)小光閱讀 315評論 0 6