日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
你好,面試官|(zhì)我不僅知道MySQL索引,還會(huì)優(yōu)化呢~

小龍有話說

本期會(huì)模擬面試 MySQL 索引更深層 相關(guān)內(nèi)容。

創(chuàng)新互聯(lián)是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、seo優(yōu)化排名、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都航空箱等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。

涉及知識(shí)點(diǎn),MySQL 索引設(shè)計(jì)原則,使用法則,MySQL優(yōu)化等

本期題改編自 ——2021屆秋招 北森 二面

面試現(xiàn)場(chǎng)

叮叮叮......

面試官:“你好,我是XX面試官,請(qǐng)問是小龍嗎?”

小龍:“您好,面試官,我是小龍”

面試官:“好的,現(xiàn)在有空嗎,我們開始面試吧”

小龍:“嗯嗯,準(zhǔn)備好啦”

.......

other questions

.......

面試官:“我看你簡(jiǎn)歷上有提到你對(duì) MySQL 掌握得挺好的對(duì)吧?。”

小龍:“哈哈,還算可以吧!”

面試官:“好的,能告訴我 MySQL 中的怎樣創(chuàng)建索引嗎?”

小龍:“好的,我簡(jiǎn)單說幾種?!?/p>

小龍:“一種是通過 alter 命令,ALTER TABLE table_name ADD INDEX index_name (column_list);”

小龍:“也可以在創(chuàng)建表時(shí)創(chuàng)建,CREATE INDEX index_name ON table_name (column_list);”

面試官:“好的,我們都知道索引用的好與壞,可以間接影響整個(gè)系統(tǒng)性能,那么你平時(shí)是怎樣去設(shè)計(jì)索引的呢?”

小龍:“其實(shí)道理很簡(jiǎn)單,無須繁瑣花哨,在公司項(xiàng)目中,我們更看重的是性價(jià)比?!?/p>

獨(dú)白:“來了來了,幸好在我【面試筆記】中總結(jié)過,來吧,隨便挑幾點(diǎn)吹給你聽?!?/p>

面試官:“說說看~”

小龍:“總的來說,你創(chuàng)建索引目的就是要在盡可能少占內(nèi)存情況下去設(shè)計(jì)一個(gè)合適的索引讓查詢速度更快?!?/p>

面試官:“不錯(cuò),接著說”

小龍:“我們一般建在 where 字段匹配條件后,為了讓創(chuàng)建索引所帶來的好處大于其壞處,我們一定要在數(shù)據(jù)量大,也就是基數(shù)大的情況下才考慮索引?!?/p>

小龍:“因?yàn)閯?chuàng)建索引本身就要占空間,操作數(shù)據(jù)也要操作索引文件,數(shù)據(jù)少得不償失?!?/p>

面試官:“嗯嗯,不錯(cuò),還有嗎?”

小龍:“嗯,為了使得效率更高,應(yīng)該選擇區(qū)分度大,匹配度高的字段建立索引 。而且索引不適合于頻繁更新的數(shù)據(jù),因?yàn)椴僮鲾?shù)據(jù)同事需要維護(hù)索引又得花費(fèi)時(shí)間。”

面試官:“OK,那假如我本來已經(jīng)創(chuàng)建了個(gè) (a) 索引,但是由于需求我們現(xiàn)在需要加上(b)索引,你覺得怎樣操作更好呢?”

小龍:“ 嗯,我覺得我們創(chuàng)建索引方面,我們應(yīng)該盡量擴(kuò)展索引,而不是創(chuàng)建新的索引,可以合理利用聯(lián)合索引,如(a)->(a,b) 。”

小龍:“除此之外,我們?cè)谑褂脮r(shí)還得考慮索引是否會(huì)失效。不恰當(dāng)?shù)氖褂盟饕?,不僅沒有提高性能,反而占額外內(nèi)存空間,影響效率,所以說學(xué)會(huì)如何使用也是一門學(xué)問?!?/p>

面試官:“嗯嗯,那在使用時(shí)哪些地方需要我們注意呢?”

小龍:“這個(gè)在我【面試筆記】中詳細(xì)總結(jié)過啦,隨便給面試官舉幾個(gè)吧?!?/p>

小龍:“比如,我們?cè)趯懩:樵儠r(shí),如果以 %開頭,索引會(huì)因此失效?!?/p>

面試官:“那你知道具體原因嗎?”

獨(dú)白:“牛逼,這個(gè)考得還算有水平”

小龍:“其實(shí),你理解了索引的構(gòu)造排列,你就懂了?!?/p>

小龍:”我們通常用的索引數(shù)據(jù)結(jié)構(gòu)是B+樹,而索引是有序排列的;索引的排列順序是根據(jù)比較字符串的首字母排序的,如果首字母相同,就根據(jù)比較第二個(gè)字母進(jìn)行排序,以此類推?!?/p>

小龍:”因此如果把 % 放在了前面,最左的 n 個(gè)字母便是模糊不定的,無法根據(jù)索引的有序性 準(zhǔn)確的定位到某一個(gè)索引,只能進(jìn)行全表掃描,找出符合條件的數(shù)據(jù)?!?/p>

面試官:“嗯嗯,好的,基礎(chǔ)不錯(cuò),那在項(xiàng)目中有嘗試去對(duì)MySQL進(jìn)行調(diào)優(yōu)優(yōu)化這些嗎?”

獨(dú)白:“幸好在我【面試筆記】中從 索引+sql語句+數(shù)據(jù)庫結(jié)構(gòu)優(yōu)化+優(yōu)化器優(yōu)化+架構(gòu)優(yōu)化 詳細(xì)總結(jié)了?!?/p>

小龍:“ 優(yōu)化我們可以從很多方面考慮,比如 索引+sql語句+數(shù)據(jù)庫結(jié)構(gòu)優(yōu)化+優(yōu)化器優(yōu)化+架構(gòu)優(yōu)化,這里簡(jiǎn)單說幾個(gè)吧!”

面試官:“可以?!?/p>

小龍:“比如,我們從基本的索引考慮,盡量使用覆蓋索引,5.6了還支持索引下推呢!再寫多讀少的場(chǎng)景下,可以選擇普通索引而不要唯一索引,不懂可以看上一篇文章。”

小龍:“當(dāng)然需要考慮索引失效,和設(shè)計(jì)原則,上文說過了,不在贅述?!?/p>

小龍:“在寫 sql 時(shí),若是主鍵自增的表,還可以把 Limit 查詢轉(zhuǎn)換成某個(gè)位置的查詢,比如 select * from tb_sku where id>20000 limit 10;這樣可以很好利用主鍵索引快速定位?!?/p>

小龍:“優(yōu)化器我們還可以使用 MRR 【Multi-Range Read】將 ID 或鍵值讀到 buffer 排序,通過把「隨機(jī)磁盤讀」,轉(zhuǎn)化為「順序磁盤讀」,減少磁盤IO,從而提高了索引查詢的性能。就暫時(shí)只說這些吧!”

面試官:“哈哈,好的,沒想到你還懂這些,不錯(cuò)?!?/p>

小龍:“對(duì)啦,在使用過程中,我們首先應(yīng)該做到寫一手好 SQL ,考慮索引失效,復(fù)合查詢、事務(wù)、鎖等,其實(shí)把這些都注意,工作中大多數(shù)問題都已經(jīng)解決啦。”

小龍:“然后假如遇上了 SQL 執(zhí)行變慢,此時(shí)我們應(yīng)該先排查問題所在,如果可以直接找到問題可以直接解決。實(shí)在不行再考慮從優(yōu)化器參數(shù)、架構(gòu)、表設(shè)計(jì)等進(jìn)行優(yōu)化,這才是最好的優(yōu)化方案?!?/p>

面試官:“說的很好,看來平時(shí)還是有認(rèn)真學(xué)習(xí)參與項(xiàng)目中?!?/p>

面試官:“好的,時(shí)間差不多啦,今天暫時(shí)聊那么多,下期再談?wù)??!?/p>

獨(dú)白:“不愧是我,真男人是也!”

知識(shí)總結(jié)

本期我們通過面試模擬逐漸深入探討了 MySQL ,下期會(huì)繼續(xù)深入剖析關(guān)于 事務(wù)、鎖、日志等底層實(shí)現(xiàn)原理。訂閱+星標(biāo)持續(xù)追更

面試重點(diǎn)

索引設(shè)計(jì)原則?使用索引注意點(diǎn)?MySQL優(yōu)化方案等


當(dāng)前文章:你好,面試官|(zhì)我不僅知道MySQL索引,還會(huì)優(yōu)化呢~
新聞來源:http://m.5511xx.com/article/dphjiii.html