MySQL中 myisam,innodb默認(rèn)使用的是 Btree索引,至于btree的數(shù)據(jù)結(jié)構(gòu)是怎樣的都不重要,
只需要知道結(jié)果,既然是索引那這個(gè)數(shù)據(jù)結(jié)構(gòu)最后是排好序;就像新華字典他的目錄就是按照a,b,c..這樣排好序的;
所以你在找東西的時(shí)候才快,比如你找 “中” 這個(gè)字的解釋?zhuān)憧隙ň蜁?huì)定位到目錄的 z 開(kāi)頭部分;
組合索引可以這樣理解,比如(a,b,c),abc都是排好序的,在任意一段a的下面b都是排好序的,任何一段b下面c都是排好序的;
成都創(chuàng)新互聯(lián)主營(yíng)長(zhǎng)寧網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開(kāi)發(fā),長(zhǎng)寧h5微信平臺(tái)小程序開(kāi)發(fā)搭建,長(zhǎng)寧網(wǎng)站營(yíng)銷(xiāo)推廣歡迎長(zhǎng)寧等地區(qū)企業(yè)咨詢(xún)
組合索引的生效原則是 從前往后依次使用生效,如果中間某個(gè)索引沒(méi)有使用,那么斷點(diǎn)前面的索引部分起作用,斷點(diǎn)后面的索引沒(méi)有起作用;
比如
where a=3 and b=45 and c=5 .... 這種三個(gè)索引順序使用中間沒(méi)有斷點(diǎn),全部發(fā)揮作用;where a=3 and c=5... 這種情況下b就是斷點(diǎn),a發(fā)揮了效果,c沒(méi)有效果where b=3 and c=4... 這種情況下a就是斷點(diǎn),在a后面的索引都沒(méi)有發(fā)揮作用,這種寫(xiě)法聯(lián)合索引沒(méi)有發(fā)揮任何效果;where b=45 and a=3 and c=5 .... 這個(gè)跟第一個(gè)一樣,全部發(fā)揮作用,abc只要用上了就行,跟寫(xiě)的順序無(wú)關(guān)
(a,b,c) 三個(gè)列上加了聯(lián)合索引(是聯(lián)合索引 不是在每個(gè)列上單獨(dú)加索引)
還需注意, (a,b,c)多列索引和 (a,c,b)是不一樣的,看上面的圖也看得出來(lái)關(guān)系順序是不一樣的;
分析幾個(gè)實(shí)際例子來(lái)加強(qiáng)理解;
分析句子中使用的索引情況
(0) select * from mytable where a=3 and b=5 and c=4; abc三個(gè)索引都在where條件里面用到了,而且都發(fā)揮了作用 (1) select * from mytable where c=4 and b=6 and a=3; 這條語(yǔ)句列出來(lái)只想說(shuō)明 mysql沒(méi)有那么笨,where里面的條件順序在查詢(xún)之前會(huì)被mysql自動(dòng)優(yōu)化,效果跟上一句一樣 (2) select * from mytable where a=3 and c=7; a用到索引,b沒(méi)有用,所以c是沒(méi)有用到索引效果的 (3) select * from mytable where a=3 and b>7 and c=3; a用到了,b也用到了,c沒(méi)有用到,這個(gè)地方b是范圍值,也算斷點(diǎn),只不過(guò)自身用到了索引 (4) select * from mytable where b=3 and c=4; 因?yàn)閍索引沒(méi)有使用,所以這里 bc都沒(méi)有用上索引效果 (5) select * from mytable where a>4 and b=7 and c=9; a用到了 b沒(méi)有使用,c沒(méi)有使用 (6) select * from mytable where a=3 order by b; a用到了索引,b在結(jié)果排序中也用到了索引的效果,前面說(shuō)了,a下面任意一段的b是排好序的 (7) select * from mytable where a=3 order by c; a用到了索引,但是這個(gè)地方c沒(méi)有發(fā)揮排序效果,因?yàn)橹虚g斷點(diǎn)了,使用 explain 可以看到 filesort (8) select * from mytable where b=3 order by a; b沒(méi)有用到索引,排序中a也沒(méi)有發(fā)揮索引效果
文章標(biāo)題:多列索引生效規(guī)則
網(wǎng)址分享:http://aaarwkj.com/article24/gopoce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、移動(dòng)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)頁(yè)設(shè)計(jì)公司、、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)