溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql索引失效的現(xiàn)象有哪些

發(fā)布時(shí)間:2022-01-05 16:05:37 來(lái)源:億速云 閱讀:138 作者:iii 欄目:MySQL數(shù)據(jù)庫(kù)

本篇內(nèi)容介紹了“mysql索引失效的現(xiàn)象有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

索引失效的情況:1、like查詢以“%”開(kāi)頭;2、or語(yǔ)句前后沒(méi)有同時(shí)使用索引;3、組合索引中不是使用第一列索引;4、在索引列上使用“IS NULL”或“IS NOT NULL”操作;5、在索引字段上使用“not”,“<>”,“!=”等等。

mysql索引失效的現(xiàn)象有哪些

本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。

索引是一種特殊的數(shù)據(jù)庫(kù)結(jié)構(gòu),由數(shù)據(jù)表中的一列或多列組合而成,可以用來(lái)快速查詢數(shù)據(jù)表中有某一特定值的記錄。本節(jié)將詳細(xì)講解索引的含義、作用和優(yōu)缺點(diǎn)。

通過(guò)索引,查詢數(shù)據(jù)時(shí)不用讀完記錄的所有信息,而只是查詢索引列。否則,數(shù)據(jù)庫(kù)系統(tǒng)將讀取每條記錄的所有信息進(jìn)行匹配。

可以把索引比作新華字典的音序表。例如,要查“庫(kù)”字,如果不使用音序,就需要從字典的 400 頁(yè)中逐頁(yè)來(lái)找。但是,如果提取拼音出來(lái),構(gòu)成音序表,就只需要從 10 多頁(yè)的音序表中直接查找。這樣就可以大大節(jié)省時(shí)間。

因此,使用索引可以很大程度上提高數(shù)據(jù)庫(kù)的查詢速度,還有效的提高了數(shù)據(jù)庫(kù)系統(tǒng)的性能。

索引查詢失效的幾個(gè)情況:

1、like 以%開(kāi)頭,索引無(wú)效;當(dāng)like前綴沒(méi)有%,后綴有%時(shí),索引有效。

mysql索引失效的現(xiàn)象有哪些

2、or語(yǔ)句前后沒(méi)有同時(shí)使用索引。

當(dāng)or左右查詢字段只有一個(gè)是索引,該索引失效,只有當(dāng)or左右查詢字段均為索引時(shí),才會(huì)生效

mysql索引失效的現(xiàn)象有哪些

mysql索引失效的現(xiàn)象有哪些

3、組合索引,不是使用第一列索引,索引失效。

mysql索引失效的現(xiàn)象有哪些

4、如果列類(lèi)型是字符串,那一定要在條件中將數(shù)據(jù)使用引號(hào)引用起來(lái),否則不使用索引

數(shù)據(jù)類(lèi)型出現(xiàn)隱式轉(zhuǎn)化。如varchar不加單引號(hào)的話可能會(huì)自動(dòng)轉(zhuǎn)換為int型,使索引無(wú)效,產(chǎn)生全表掃描。

mysql索引失效的現(xiàn)象有哪些

5、在索引列上使用 IS NULL 或 IS NOT NULL操作。

索引是不索引空值的,所以這樣的操作不能使用索引,可以用其他的辦法處理,例如:數(shù)字類(lèi)型,判斷大于0,字符串類(lèi)型設(shè)置一個(gè)默認(rèn)值,判斷是否等于默認(rèn)值即可。(此處是錯(cuò)誤的!

mysql索引失效的現(xiàn)象有哪些

解釋以上錯(cuò)誤:

此處我將重新創(chuàng)建一個(gè)emp表

mysql索引失效的現(xiàn)象有哪些

創(chuàng)建新的索引

mysql索引失效的現(xiàn)象有哪些

查看索引

mysql索引失效的現(xiàn)象有哪些

執(zhí)行SQL語(yǔ)句

mysql索引失效的現(xiàn)象有哪些

mysql索引失效的現(xiàn)象有哪些

由此可發(fā)現(xiàn)有使用到索引

總結(jié):在索引列上使用 IS NULL 或 IS NOT NULL操作,索引不一定失效?。。?/strong>

6、在索引字段上使用not,<>,!=。

不等于操作符是永遠(yuǎn)不會(huì)用到索引的,因此對(duì)它的處理只會(huì)產(chǎn)生全表掃描。 優(yōu)化方法: key<>0 改為 key>0 or key<0。

mysql索引失效的現(xiàn)象有哪些

mysql索引失效的現(xiàn)象有哪些

7、對(duì)索引字段進(jìn)行計(jì)算操作、字段上使用函數(shù)。(索引為 emp(ename,empno,sal))

mysql索引失效的現(xiàn)象有哪些

mysql索引失效的現(xiàn)象有哪些

8、當(dāng)全表掃描速度比索引速度快時(shí),mysql會(huì)使用全表掃描,此時(shí)索引失效。

如果mysql估計(jì)使用全表掃描要比使用索引快,則不使用索引

“mysql索引失效的現(xiàn)象有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI