久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      mysql中in會(huì)用索引嗎

      mysql中in是否會(huì)用索引的兩種情況:1、當(dāng)in的取值范圍較小時(shí),in會(huì)走索引;2、當(dāng)in的取值范圍較大時(shí),in不走索引,而是會(huì)用全表掃描。因?yàn)閕n的條件過(guò)多時(shí),返回的數(shù)據(jù)就會(huì)很多,可能會(huì)導(dǎo)致應(yīng)用堆內(nèi)內(nèi)存溢出,導(dǎo)致索引失效。

      mysql中in會(huì)用索引嗎

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

      mysql中in會(huì)用索引嗎

      結(jié)論:IN肯定會(huì)走索引,但是當(dāng)IN的取值范圍較大時(shí)會(huì)導(dǎo)致索引失效,走全表掃描

      navicat可視化工具使用explain函數(shù)查看sql執(zhí)行信息

      場(chǎng)景1:當(dāng)IN中的取值只有一個(gè)主鍵時(shí)

      mysql中in會(huì)用索引嗎

      我們只需要注意一個(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:另一種形式的全表掃描,只不過(guò)他的掃描方式是按照索引的順序

      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后面作為條件查詢(xún),mysql優(yōu)化器就能把這次查詢(xún)優(yōu)化轉(zhuǎn)化為一個(gè)常量。至于如何轉(zhuǎn)化以及何時(shí)轉(zhuǎn)化,這個(gè)取決于優(yōu)化器

      一般來(lái)說(shuō),得保證查詢(xún)至少達(dá)到range級(jí)別,最好能達(dá)到ref,type出現(xiàn)index和all時(shí),表示走的是全表掃描沒(méi)有走索引,效率低下,這時(shí)需要對(duì)sql進(jìn)行調(diào)優(yōu)。

      當(dāng)extra出現(xiàn)Using filesor或Using temproary時(shí),表示無(wú)法使用索引,必須盡快做優(yōu)化。

      possible_keys:sql所用到的索引

      key:顯示MySQL實(shí)際決定使用的鍵(索引)。如果沒(méi)有選擇索引,鍵是NULL

      rows: 顯示MySQL認(rèn)為它執(zhí)行查詢(xún)時(shí)必須檢查的行數(shù)。

      場(chǎng)景2:擴(kuò)大IN中的取值范圍

      mysql中in會(huì)用索引嗎

      此時(shí)仍然走了索引,但是效率降低了

      場(chǎng)景3:繼續(xù)擴(kuò)大IN的取值范圍

      mysql中in會(huì)用索引嗎

      看上面的圖,發(fā)現(xiàn)此時(shí)已經(jīng)沒(méi)有走索引了,而是全表掃描。

      在說(shuō)一下結(jié)論

      結(jié)論:IN肯定會(huì)走索引,但是當(dāng)IN的取值范圍較大時(shí)會(huì)導(dǎo)致索引失效,走全表掃描。

      By the way:如果使用了 not in,則不走索引。

      推薦學(xué)習(xí):mysql視頻教程

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)