今天小編給大家分享一下MySQL中in會(huì)不會(huì)用索引的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
在前郭等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站制作,前郭網(wǎng)站建設(shè)費(fèi)用合理。
mysql中in是否會(huì)用索引的兩種情況:1、當(dāng)in的取值范圍較小時(shí),in會(huì)走索引;2、當(dāng)in的取值范圍較大時(shí),in不走索引,而是會(huì)用全表掃描。因?yàn)閕n的條件過多時(shí),返回的數(shù)據(jù)就會(huì)很多,可能會(huì)導(dǎo)致應(yīng)用堆內(nèi)內(nèi)存溢出,導(dǎo)致索引失效。
本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。
結(jié)論:IN肯定會(huì)走索引,但是當(dāng)IN的取值范圍較大時(shí)會(huì)導(dǎo)致索引失效,走全表掃描
navicat可視化工具使用explain函數(shù)查看sql執(zhí)行信息
我們只需要注意一個(gè)最重要的type 的信息很明顯的提現(xiàn)是否用到索引:
type結(jié)果值從好到壞依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
all:全表掃描
index:另一種形式的全表掃描,只不過他的掃描方式是按照索引的順序
range:有范圍的索引掃描,相對(duì)于index的全表掃描,他有范圍限制,因此要優(yōu)于index
ref: 查找條件列使用了索引而且不為主鍵和unique。其實(shí),意思就是雖然使用了索引,但該索引列的值并不唯一,有重復(fù)。這樣即使使用索引快速查找到了第一條數(shù)據(jù),仍然不能停止,要進(jìn)行目標(biāo)值附近的小范圍掃描。但它的好處是它并不需要掃全表,因?yàn)樗饕怯行虻?,即便有重?fù)值,也是在一個(gè)非常小的范圍內(nèi)掃描。
const:通常情況下,如果將一個(gè)主鍵放置到where后面作為條件查詢,mysql優(yōu)化器就能把這次查詢優(yōu)化轉(zhuǎn)化為一個(gè)常量。至于如何轉(zhuǎn)化以及何時(shí)轉(zhuǎn)化,這個(gè)取決于優(yōu)化器
一般來說,得保證查詢至少達(dá)到range級(jí)別,最好能達(dá)到ref,type出現(xiàn)index和all時(shí),表示走的是全表掃描沒有走索引,效率低下,這時(shí)需要對(duì)sql進(jìn)行調(diào)優(yōu)。
當(dāng)extra出現(xiàn)Using filesor或Using temproary時(shí),表示無法使用索引,必須盡快做優(yōu)化。
possible_keys:sql所用到的索引
key:顯示MySQL實(shí)際決定使用的鍵(索引)。如果沒有選擇索引,鍵是NULL
rows: 顯示MySQL認(rèn)為它執(zhí)行查詢時(shí)必須檢查的行數(shù)。
此時(shí)仍然走了索引,但是效率降低了
看上面的圖,發(fā)現(xiàn)此時(shí)已經(jīng)沒有走索引了,而是全表掃描。
在說一下結(jié)論
結(jié)論:IN肯定會(huì)走索引,但是當(dāng)IN的取值范圍較大時(shí)會(huì)導(dǎo)致索引失效,走全表掃描。
By the way:如果使用了 not in,則不走索引。
以上就是“mysql中in會(huì)不會(huì)用索引”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章標(biāo)題:mysql中in會(huì)不會(huì)用索引
分享URL:http://jinyejixie.com/article2/psigoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、搜索引擎優(yōu)化、網(wǎng)站收錄、品牌網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)