MySQL數(shù)據(jù)庫索引的最左匹配原則
一. 聯(lián)合索引說明
建立三個字段的聯(lián)合索引
聯(lián)合索引(a,b,c)相當(dāng)于建立了索引:(a),(a,b),(a,b,c)
二. 那ac是否能用到索引呢?
先給出結(jié)論:a可以命中聯(lián)合索引(a,b,c),c無法命中,所以ac組合無法命中聯(lián)合索引。
1.建立abc聯(lián)合索引(province,city,district)
ac索引查詢
SELECT * FROM user_address WHERE province = '廣東' AND district = '南雄市'
顯示查詢范圍是ALL
2.直接建立ac兩個字段得聯(lián)合索引
SELECT * FROM user_address WHERE province = '廣東' AND district = '南雄市'
查詢結(jié)果是ref走了索引,掃描的行數(shù)也從21行變成了13行
3.ab索引查詢
查詢范圍為ref
結(jié)論
abc聯(lián)合索引,ac中的c不能命中這三個字段的聯(lián)合索引,a可以命中,所以possible_keys列會顯示使用了聯(lián)合索引
三. 思考
abc索引,acb會走索引嗎?
- 最左前綴匹配原則,mysql會一直向右匹配直到遇到范圍查詢(>、<、between、like)就停止匹配,
- 比如a=3 and b=4 and c>5 and d=6如果建立(a,b,c,d)順序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調(diào)整。
- =和in可以亂序,比如a=1 and b=2 and c=3建立(a,b,c)索引可以任意順序,mysql的查詢優(yōu)化器會幫你優(yōu)化成索引可以識別的形式
四. 最左匹配原則的成因
- 因為聯(lián)合索引,如:abc,聯(lián)合索引可以理解為有序的且形成的基礎(chǔ)是建立在a上的,從a上建立b,b上建立c,所以必須要按照順序來
- 可以簡單理解為:先對a排序建立索引,再在a的基礎(chǔ)上對b進(jìn)行排序,再是c
- 所以聯(lián)合索引在遇到范圍查詢,后面的索引會失效。
到此這篇關(guān)于MySQL數(shù)據(jù)庫索引的最左匹配原則的文章就介紹到這了,更多相關(guān)MySQL 索引最左匹配 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL命令行導(dǎo)出導(dǎo)入數(shù)據(jù)庫實例詳解
這篇文章主要介紹了MySQL命令行導(dǎo)出導(dǎo)入數(shù)據(jù)庫實例詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10解決mybatis查詢結(jié)果為null時,值被默認(rèn)值替換問題
這篇文章主要介紹了解決mybatis查詢結(jié)果為null時,值被默認(rèn)值替換問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07Mysql排序和分頁(order by&limit)及存在的坑
這篇文章主要介紹了Mysql排序和分頁(order by&limit)及存在的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09解決啟動MySQL服務(wù)時出現(xiàn)"mysql本地計算機(jī)上的MySQL服務(wù)啟動后停止"的問題
某一天我的MySQL啟動突然出現(xiàn)了異常:“mysql本地計算機(jī)上的MySQL服務(wù)啟動后停止,某些在未由其他服務(wù)或程序使用時將自動停止,”?,小編在網(wǎng)絡(luò)上面找了很多方法,MySQL啟動成功了,但是第二天開啟MySQL時還是出現(xiàn)了這個問題,現(xiàn)把兩種方法總結(jié)一下,需要的朋友可以參考下2023-11-11MySQL中配置文件my.cnf因權(quán)限問題導(dǎo)致無法啟動的解決方法
這篇文章主要給大家介紹了關(guān)于MySQL中配置文件my.cnf因權(quán)限問題導(dǎo)致無法啟動的解決方法,該無法啟動的錯誤提示代碼是:World-writable config file '/etc/my.cnf' is ignored,文中給出了詳細(xì)的解決方法,需要的朋友們下面來一起看看吧。2017-06-06