MySql學(xué)習(xí)筆記(九):索引失效

數(shù)據(jù)準備:

創(chuàng)新互聯(lián)科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供成都移動機房托管,高防物理服務(wù)器租用,成都IDC機房托管,成都主機托管等互聯(lián)網(wǎng)服務(wù)。

CREATE?TABLE?`t_blog`?(
??`id`?int(11)?NOT?NULL?auto_increment,
??`title`?varchar(50)?default?NULL,
??`typeId`?int(11)?default?NULL,
??`a`?int(11)?default?'0',
??PRIMARY?KEY??(`id`),
??KEY?`index_1`?USING?BTREE?(`title`,`typeId`,`a`)
)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8

1、復(fù)合索引丟失第一列字段:
MySql學(xué)習(xí)筆記(九):索引失效

2、復(fù)合索引,跳過中間字段:

先來看查詢條件只有第一列時的結(jié)果:

MySql學(xué)習(xí)筆記(九):索引失效

接下來執(zhí)行跳過中間字段的情況:

MySql學(xué)習(xí)筆記(九):索引失效

此時索引確實生效,但key_len依舊是153,理論上查詢精度越大key_len會越大,但此時并沒有增大就表示條件【a='123'】上的索引并沒有用到。

復(fù)合索引應(yīng)當遵守【最左前列原則】,即:查詢應(yīng)該從索引的最左前列開始并且不能跳過中間列,一旦跳過某個列,該列之后的列上的索引都會失效

3、在索引上進行計算、函數(shù)、類型轉(zhuǎn)換等操作導(dǎo)致索引失效:
使用函數(shù):

MySql學(xué)習(xí)筆記(九):索引失效

進行自動類型轉(zhuǎn)換,title定義的是varchar類型,但查詢時給他賦值int導(dǎo)致MySQL會自動給他進行類型轉(zhuǎn)換導(dǎo)致索引失效

MySql學(xué)習(xí)筆記(九):索引失效

使用? + - * / 等計算

MySql學(xué)習(xí)筆記(九):索引失效

4、使用了范圍導(dǎo)致該索引之后的索引失效

先來看一下沒使用范圍的sql執(zhí)行情況:

MySql學(xué)習(xí)筆記(九):索引失效

隨著查詢精度的增大,key_len增大,表示兩個條件的索引均有效,現(xiàn)在在范圍之后再添加一個查詢條件:

MySql學(xué)習(xí)筆記(九):索引失效

key_len依舊保持158,說明票【a=1】這個條件上的索引是失效的。

5、使用不等于操作(!= 或 <>)

MySql學(xué)習(xí)筆記(九):索引失效

6、使用 is not null?

MySql學(xué)習(xí)筆記(九):索引失效

7、使用前導(dǎo)模糊查詢

先來看后導(dǎo)查詢:

MySql學(xué)習(xí)筆記(九):索引失效

此時索引并沒有失效,再來看前后導(dǎo)模糊查詢:

MySql學(xué)習(xí)筆記(九):索引失效

此時索引已經(jīng)失效,那么單獨使用前導(dǎo)查詢:

MySql學(xué)習(xí)筆記(九):索引失效

此時索引失效,因此,使用前導(dǎo)查詢會導(dǎo)致索引失效。

8、mysql不走索引會有更好的查詢性能時索引失效

新聞標題:MySql學(xué)習(xí)筆記(九):索引失效
文章位置:http://muchs.cn/article12/ipisdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站排名、自適應(yīng)網(wǎng)站外貿(mào)建站、網(wǎng)站導(dǎo)航、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名