1.全值匹配
目前創(chuàng)新互聯(lián)公司已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、蓬江網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
2.最佳左前綴法則
3.不在索引列上做任何操作(計(jì)算、函數(shù)、(自動(dòng)or手動(dòng))類(lèi)型轉(zhuǎn)換),會(huì)導(dǎo)致索引失效而轉(zhuǎn)向全表掃描
4.存儲(chǔ)引擎不能使用索引中范圍條件右邊的列
5.盡量使用覆蓋索引(只訪(fǎng)問(wèn)索引的查詢(xún)(索引列和查詢(xún)列一直)),減少select *
6.mysql在使用不等于(!=或者)的時(shí)候無(wú)法使用索引會(huì)導(dǎo)致全表掃描
7.is null, is not null也無(wú)法使用索引
8.like以通配符開(kāi)頭(‘%abc...’)mysql索引失效會(huì)變成全表掃描的操作
9.字符串不加單引號(hào)索引失效
10.少用or,用它來(lái)連接時(shí)索引會(huì)失效
首先我們還是先把表結(jié)構(gòu)說(shuō)下:用戶(hù)表tb_user結(jié)構(gòu)如下:
1、 不要在索引列上進(jìn)行運(yùn)算操作, 索引將失效。
手機(jī)號(hào)phone字段有唯一索引,當(dāng)根據(jù)phone字段進(jìn)行函數(shù)運(yùn)算操作之后,索引失效:
2、 字符串類(lèi)型字段使用時(shí),不加引號(hào),索引將失效。
如果字符串不加單引號(hào),對(duì)于查詢(xún)結(jié)果,沒(méi)什么影響,但是數(shù) 據(jù)庫(kù)存在隱式類(lèi)型轉(zhuǎn)換,索引將失效。
3、 如果僅僅是尾部模糊匹配,索引不會(huì)失效。如果是頭部模糊匹配,索引失效。
接下來(lái),我們來(lái)看一下這三條SQL語(yǔ)句的執(zhí)行效果,查看一下其執(zhí)行計(jì)劃:
由于下面查詢(xún)語(yǔ)句中,都是根據(jù)profession(專(zhuān)業(yè))字段查詢(xún),profession字段是一個(gè)普通的索引, 我們主要看一下,模糊查詢(xún)時(shí),%加在關(guān)鍵字之前,和加在關(guān)鍵字之后的影響。
經(jīng)過(guò)上述的測(cè)試,我們發(fā)現(xiàn),在like模糊查詢(xún)中,在關(guān)鍵字后面加%,索引可以生效。而如果在關(guān)鍵字 前面加了%,索引將會(huì)失效。
4、 用or分割開(kāi)的條件, 如果or前的條件中的列有索引,而后面的列中沒(méi)有索引,那么涉及的索引都不會(huì) 被用到。
由于age沒(méi)有索引,所以即使id有索引,索引也會(huì)失效。所以需要針對(duì)于age也要建立索引。
5、 數(shù)據(jù)分布影響:如果MySQL評(píng)估使用索引比全表更慢,則不使用索引。
你的數(shù)據(jù)里沒(méi)有值是CHINB的數(shù)據(jù)吧。
并不是建了索引,然后查詢(xún)的條件用索引對(duì)應(yīng)的列做條件查就能走索引。假如表中所有數(shù)據(jù)在這個(gè)country的值都是CHINA,那走索引又有什么區(qū)別。
建索引一般是建在常用的列上,并且列中的值是分散在很多不同的值,而不是大部分都是相同值。比如主鍵,就沒(méi)有任何一個(gè)主鍵值是重復(fù)的。
如果有幫助到你,請(qǐng)點(diǎn)擊采納。
具體原因是:
1、索引列值為null,此時(shí)會(huì)索引失效。
2、sql的語(yǔ)句中寫(xiě)了or,如果or后的字段不全是帶索引字段,此時(shí)索引失效。
3、模糊查詢(xún)是like以%XX開(kāi)頭,就是說(shuō)左模糊不太行,右模糊可以。
4、存在類(lèi)型轉(zhuǎn)換,比如你的索引字段是varchar型,但是你搜索條件卻是userid=333,那這樣索引不生效。
5、數(shù)據(jù)量極少時(shí),Mysql不會(huì)使用索引,因?yàn)槿頀呙杷俣雀臁?/p>
6、where條件中的索引運(yùn)算設(shè)計(jì)計(jì)算時(shí),索引失效。索引列不要使用函數(shù)。
文章標(biāo)題:mysql索引失效怎么寫(xiě) mysql索引為什么失效
鏈接URL:http://muchs.cn/article22/doshjjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷(xiāo)推廣、響應(yīng)式網(wǎng)站、微信公眾號(hào)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(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)
猜你還喜歡下面的內(nèi)容