mysql 索引易混淆概念

本文針對(duì)mysql innodb引擎情況下,索引的一些易混淆概念整合

1.覆蓋索引:查詢的字段已經(jīng)在查詢條件的索引樹上,這樣在查詢的時(shí)候就不用回表,可以少查詢一顆b+樹,常作為索引的優(yōu)化手段之一,通常我們都會(huì)根據(jù)查詢條件字段和查詢字段建立聯(lián)合索引來實(shí)現(xiàn)覆蓋索引

2.最左前綴原則:在聯(lián)合索引(a,b,c)中,也包含了a索引,不用單獨(dú)給聯(lián)合索引左邊的字段建立索引,最左匹配原則,在遇到范圍查詢(如 >、<)的時(shí)候,就會(huì)停止匹配,也就是范圍查詢的字段可以用到聯(lián)合索引,但是在范圍查詢字段的后面的字段無法用到聯(lián)合索引。注意,對(duì)于 >=、<=、BETWEEN、like 前綴匹配的范圍查詢,并不會(huì)停止匹配,可以通過執(zhí)行explain后的key_len判斷聯(lián)合索引中命中的索引字段

3.聯(lián)合索引:聯(lián)合索引就是多字段聯(lián)合組成的索引,是上面1的基礎(chǔ),聯(lián)合索引里的字段遵循的排序規(guī)則是優(yōu)先滿足左邊字段排序的情況下,再對(duì)右邊字段排序,所以通常情況下右邊的字段可能是無序的,聯(lián)合索引具有最左前綴原則??

詳細(xì):https://www.cnblogs.com/rjzheng/p/12557314.html,https://xiaolincoding.com/mysql/index/index_interview.html#%E6%8C%89%E5%AD%97%E6%AE%B5%E4%B8%AA%E6%95%B0%E5%88%86%E7%B1%BB

4.索引下推:mysql在5.6引入,在索引遍歷過程中,對(duì)聯(lián)合索引中無法使用索引的字段做判斷,直接過濾掉不滿足條件的記錄,減少回表次數(shù),5.6版本之前聯(lián)合索引中沒有命中索引的字段都需要回表查詢?cè)龠M(jìn)行過濾,如果執(zhí)行explain現(xiàn)實(shí)Extra 為?Using index condition,則使用了索引下推

總結(jié):聯(lián)合索引對(duì)sql的優(yōu)化可以起到很大的作用,多條件查詢時(shí)可以提升查詢性能,利用覆蓋索引可以減少回表查詢的時(shí)間,提升查詢性能,利用最左前綴原則可以減少建立索引帶來的開銷,如果有排序的情況,還可以根據(jù)篩選字段和排序字段建立聯(lián)合索引來保證提取數(shù)據(jù)時(shí)本身有序,來避免查詢執(zhí)行排序算法,進(jìn)而提升查詢sql性能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容