欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

分析MySQL鐘notexists與索引的關(guān)系

這篇文章主要介紹分析MySQL鐘not exists與索引的關(guān)系,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)景德鎮(zhèn),十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108

在一些業(yè)務(wù)場(chǎng)景中,會(huì)使用NOT EXISTS語(yǔ)句確保返回?cái)?shù)據(jù)不存在于特定集合,部分同事會(huì)發(fā)現(xiàn)NOT EXISTS有些場(chǎng)景性能較差,甚至有些網(wǎng)上謠言說(shuō)”NOT EXISTS不走索引”,哪對(duì)于NOT EXISTS語(yǔ)句,我們?nèi)绾蝺?yōu)化呢?

以今天優(yōu)化的SQL為例,優(yōu)化前SQL為:

SELECT count(1) FROM t_monitor m WHERE NOT exists (  SELECT 1   FROM t_alarm_realtime AS a   WHERE a.resource_id=m.resource_id   AND a.resource_type=m.resource_type   AND a.monitor_name=m.monitor_name)

我們使用LEFT JOIN方式進(jìn)行優(yōu)化,優(yōu)化后SQL為:

SELECT count(1) FROM t_monitor m LEFT JOIN t_alarm_realtime AS a    ON a.resource_id=m.resource_id   AND a.resource_type=m.resource_type   AND a.monitor_name=m.monitor_name WHERE a.resource_id is NULL

優(yōu)化效果:

優(yōu)化前執(zhí)行時(shí)間29秒以上,優(yōu)化后1.2秒,優(yōu)化提升25倍。

NOT EXISTS真的不走索引么?

查看兩種SQL的執(zhí)行計(jì)劃!

使用NOT EXIST方式的執(zhí)行計(jì)劃:

使用LEFT JOIN方式的執(zhí)行計(jì)劃:

從執(zhí)行計(jì)劃來(lái)看,兩個(gè)表都使用了索引,區(qū)別在于NOT EXISTS使用“DEPENDENT SUBQUERY”方式,而LEFT JOIN使用普通表關(guān)聯(lián)的方式。

推薦看下:為什么索引能提高查詢速度?

通過(guò)MySQL提供的Profiling方式來(lái)查看兩種方式的執(zhí)行過(guò)程。

使用NOT EXIST方式的執(zhí)行過(guò)程:

使用LEFT JOIN方式的執(zhí)行過(guò)程:

從執(zhí)行過(guò)程來(lái)看,LEFT JOIN方式的主要消耗在Sending data一項(xiàng)上(1.2s),而NOT EXISTS方式主要消耗在executeing和Sending data兩項(xiàng)上,受限于Profiling只存放100行記錄緣故。

從Profiling中只能看到47個(gè)” executeing和Sending data”的組合項(xiàng)(每個(gè)組合項(xiàng)約50us),通過(guò)執(zhí)行計(jì)劃看出,外表t_monitor的數(shù)據(jù)量為578436行,忽略統(tǒng)計(jì)信息不準(zhǔn)情況下,使用NOT EXISTS方式應(yīng)該會(huì)產(chǎn)生578436個(gè)” executeing和Sending data”的組合項(xiàng),總計(jì)消耗時(shí)間=50μs*578436=28921800us=28.92s。

從上面執(zhí)行過(guò)程可以推斷出:

使用NOT EXISTS方式的執(zhí)行性能?chē)?yán)重依賴于NOT EXISTS子查詢的執(zhí)行次數(shù)即外層查詢結(jié)果集的數(shù)據(jù)量。

  1. 當(dāng)外層查詢結(jié)果集的數(shù)據(jù)量N較小時(shí)執(zhí)行性能較好,如有N=10執(zhí)行時(shí)間為50μs*10=500us=0.005s,再加上一些額外消耗,執(zhí)行結(jié)果也能在0.01秒或10毫秒內(nèi)范圍,這個(gè)響應(yīng)時(shí)間應(yīng)該能被大部分應(yīng)用程序接受。

  2. 當(dāng)外層程勛結(jié)果集的數(shù)據(jù)量N較大甚至上千萬(wàn)數(shù)據(jù)量時(shí),NOT EXISTS的查詢性能會(huì)變得非常糟糕,甚至?xí)罅肯?a title="服務(wù)器" target="_blank" >服務(wù)器IO和CPU資源從而影響其他業(yè)務(wù)正常運(yùn)行。

除上述問(wèn)題外,在優(yōu)化過(guò)程中發(fā)現(xiàn)本應(yīng)該存儲(chǔ)相同數(shù)據(jù)的resource_id列在兩個(gè)表中定義不同,一表為VARCHAR而另外一表為BIGINT,外部結(jié)果集的字段類(lèi)型和NOT EXIST字表中字段類(lèi)型不同導(dǎo)致NOT EXISTS子查詢中無(wú)法使用索引,使得子查詢性能較差,最終影響整個(gè)查詢的執(zhí)行性能。

京東商城也曾出現(xiàn)過(guò)大量類(lèi)似案例,一些表使用VARCHAR來(lái)存放訂單號(hào),而另一些表使用BIGINT來(lái)存放,在兩表進(jìn)行管理時(shí)性能極差,希望研發(fā)同事引以為戒。關(guān)注公眾號(hào)Java技術(shù)?;貜?fù)m36獲取一份MySQL研發(fā)軍規(guī)。

以上是分析MySQL鐘not exists與索引的關(guān)系的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁(yè)題目:分析MySQL鐘notexists與索引的關(guān)系
文章分享:http://chinadenli.net/article4/gphhie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)移動(dòng)網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、品牌網(wǎng)站制作、企業(yè)建站

廣告

聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
国产成人av在线免播放观看av| 九九热视频网在线观看| 少妇激情在线免费观看| 69精品一区二区蜜桃视频| 一区二区三区18禁看| 色鬼综合久久鬼色88| 九九热这里有精品20| 麻豆一区二区三区在线免费| 亚洲黄香蕉视频免费看| 国产日本欧美韩国在线| 久久夜色精品国产高清不卡| 91福利免费一区二区三区| 天海翼精品久久中文字幕| 99热在线精品视频观看| 精品亚洲香蕉久久综合网| 日韩精品一级一区二区| 情一色一区二区三区四| 欧美一本在线免费观看| 国产精品熟女乱色一区二区| 亚洲女同一区二区另类| 成人免费在线视频大香蕉| 偷拍偷窥女厕一区二区视频| 欧美成人一区二区三区在线| 欧美日韩国产精品自在自线| 亚洲精品成人福利在线| 一区二区日本一区二区欧美| 人妻少妇系列中文字幕| 国产精品白丝久久av| 日韩精品一区二区亚洲| 免费大片黄在线观看国语| 欧美日韩一区二区午夜| 久久亚洲午夜精品毛片| 欧美国产日产综合精品| 中文字幕在线五月婷婷| 亚洲国产av在线观看一区 | 东京热男人的天堂久久综合| 欧美中文日韩一区久久| 日本高清中文精品在线不卡| 亚洲精品福利视频你懂的| 99国产高清不卡视频| 国产精品色热综合在线|