給left join關(guān)聯(lián)關(guān)系字段加索引

left join是相當(dāng)耗資源的操作,如果關(guān)聯(lián)的字段沒(méi)有索引的話,速度是很慢的,所以如果有l(wèi)eft join的話,最好用索引字段取關(guān)聯(lián)。

索引關(guān)聯(lián)理解

  • inner join
  • left join

如果是inner join的話,一邊有索引就可以了

如果是left join涂邀,主表可以不用索引谋旦,但另外張表就要索引

切記:小表驅(qū)動(dòng)大表遂蛀,給被驅(qū)動(dòng)表建立索引

EXPLAIN語(yǔ)句分析出來(lái)的第一行的表即是驅(qū)動(dòng)表

在以小表驅(qū)動(dòng)大表的情況下,再給大表建立索引會(huì)大大提高執(zhí)行速度

在join連接時(shí)哪個(gè)表是驅(qū)動(dòng)表诞挨,哪個(gè)表是被驅(qū)動(dòng)表:

  1. 當(dāng)使用left join時(shí)新荤,表是驅(qū)動(dòng)表揽趾,表是被驅(qū)動(dòng)表
  2. 當(dāng)使用right join時(shí),表是驅(qū)動(dòng)表苛骨,表是被驅(qū)動(dòng)表
  3. 當(dāng)使用join時(shí)篱瞎,mysql會(huì)選擇數(shù)據(jù)量比較小的表作為驅(qū)動(dòng)表大表作為被驅(qū)動(dòng)表

left join 原理是 [左連接] 情況下左表全有痒芝,因此在右邊創(chuàng)建索引俐筋,得到比較理想的效果

然后 inner join 是因?yàn)閙ysql自帶得優(yōu)化器能自動(dòng)識(shí)別怎么去”找“更省時(shí)間

結(jié)論:left join:右邊創(chuàng)建索引;right join:左表創(chuàng)建索引

索引失效

場(chǎng)景:當(dāng)使用關(guān)聯(lián)查詢(inner 严衬、left澄者、right join)等進(jìn)行查詢時(shí)候,關(guān)聯(lián)條件都已建立索引请琳,但查看執(zhí)行計(jì)劃發(fā)現(xiàn)并未走索引粱挡。

原因:兩表字段的字符集不相同導(dǎo)致關(guān)聯(lián)查詢索引失效

解決方案:

  1. 修改表字段字符集類型,保證字符集一致
  2. 使用convert()函數(shù)俄精,保證關(guān)聯(lián)的索引字段 轉(zhuǎn)換后兩邊字符集一致

索引在關(guān)聯(lián)查詢中的作用

MySQL執(zhí)行[關(guān)聯(lián)查詢]的策略簡(jiǎn)單地說(shuō)询筏,先從一個(gè)表循環(huán)取出單條數(shù)據(jù),然后再循環(huán)到下一個(gè)表中尋找匹配的行竖慧,然后再下一個(gè)表嫌套,依次下去,直到找到所有表中匹配的行為止圾旨。然后根據(jù)各個(gè)表匹配的行踱讨,返回查詢中需要的各個(gè)列。

image.png

根據(jù)上述內(nèi)容砍的,第一張表很重要痹筛。但關(guān)聯(lián)順序并不是按照SQL語(yǔ)句中的順序。在執(zhí)行關(guān)聯(lián)查詢的時(shí)候,關(guān)聯(lián)查詢優(yōu)化器通過(guò)評(píng)估不同順序時(shí)的成本帚稠,選擇一個(gè)代價(jià)最小的關(guān)聯(lián)順序产雹。當(dāng)然如果需要,可以使用STRAIGHT_JOIN關(guān)鍵字人工指定關(guān)聯(lián)順序翁锡。

所以,多表關(guān)聯(lián)查詢夕土,比如三表關(guān)聯(lián)馆衔,執(zhí)行過(guò)程大概是,關(guān)聯(lián)查詢優(yōu)化器選擇其中一個(gè)查詢成本最小的表怨绣,一般是掃描行數(shù)最少角溃,然后根據(jù)關(guān)聯(lián)字段關(guān)聯(lián)后面第二、第三張表篮撑〖跸福可見(jiàn)如果第二、第三張表上有索引赢笨,就能大幅提高性能未蝌。優(yōu)化關(guān)聯(lián)查詢,確保ON或者USING子句上的列有索引茧妒。在創(chuàng)建索引的時(shí)候就要考慮到關(guān)聯(lián)順序萧吠。優(yōu)化器的關(guān)聯(lián)順序中最前面的表不需要在關(guān)聯(lián)列上建索引,只需在關(guān)聯(lián)順序中的第二個(gè)及以后表的相應(yīng)列上建索引桐筏。

可見(jiàn)纸型,在關(guān)聯(lián)查詢中,第一張表以后的多張表的關(guān)聯(lián)字段上的索引梅忌,可以同時(shí)起作用狰腌。

此外注意,要確保任何group by和order by中的表達(dá)式只涉及到一個(gè)表中的列牧氮,這樣mysql才有可能使用索引來(lái)優(yōu)化這個(gè)過(guò)程琼腔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蹋笼,隨后出現(xiàn)的幾起案子展姐,更是在濱河造成了極大的恐慌,老刑警劉巖剖毯,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圾笨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡逊谋,警方通過(guò)查閱死者的電腦和手機(jī)擂达,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胶滋,“玉大人板鬓,你說(shuō)我怎么就攤上這事悲敷。” “怎么了俭令?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵后德,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我抄腔,道長(zhǎng)瓢湃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任赫蛇,我火速辦了婚禮绵患,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悟耘。我一直安慰自己落蝙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布暂幼。 她就那樣靜靜地躺著筏勒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粟誓。 梳的紋絲不亂的頭發(fā)上奏寨,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音鹰服,去河邊找鬼病瞳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悲酷,可吹牛的內(nèi)容都是我干的套菜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼设易,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逗柴!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起顿肺,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤戏溺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后屠尊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體旷祸,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年讼昆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了托享。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖闰围,靈堂內(nèi)的尸體忽然破棺而出赃绊,到底是詐尸還是另有隱情,我是刑警寧澤羡榴,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布碧查,位于F島的核電站,受9級(jí)特大地震影響校仑,放射性物質(zhì)發(fā)生泄漏么夫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一肤视、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涉枫,春花似錦邢滑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至衬廷,卻和暖如春摇予,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吗跋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工侧戴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跌宛。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓酗宋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親疆拘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜕猫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容