中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

MYSQL中hashjoin有什么用

這篇文章給大家分享的是有關(guān)MySQL中hash join有什么用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)專注于富川網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供富川營銷型網(wǎng)站建設(shè),富川網(wǎng)站制作、富川網(wǎng)頁設(shè)計(jì)、富川網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造富川網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供富川網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

MYSQL 的多表聯(lián)合查詢中,只有nest loop 的查詢方式,讓MYSQL 一致是被“嘲笑”的地方。MYSQL 8.018 后mysql 將擁有HASH JOIN 功能,雖然對比其他數(shù)據(jù)庫來說,這并不新鮮,但對于MYSQL 算是劃時(shí)代的里程碑。

原理之類的先不說,先看效果。建立兩個(gè)存儲過程,為C1 表和 C2表插入測試數(shù)據(jù)

delimiter //

CREATE PROCEDURE insert_c1()

BEGIN

 DECLARE i int ;

DECLARE a varchar(20) ;

DECLARE b smallint ;

set i = 1;

begin 

WHILE i<=1000000 do

 set b = FLOOR(rand()*50);

if i mod 2 = 0 then

set a = 'good';

elseif i mod 3 = 0 then

set a = 'excellent';

elseif i mod 5 = 0 then

set a  = 'ordinary';

elseif i mod 4 = 0 then

set a = 'worsen';

else

set a = 'improvement';

end if;

if b < 20 then

set b = b + 15;

end if;

INSERT into test.status(status,score) values (a,b);

set i = i + 1;

END WHILE;

end;

 END

//

兩個(gè)表結(jié)構(gòu)是一樣的

 CREATE TABLE `t1` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `c1` varchar(20) DEFAULT NULL,

  `c2` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`),

  KEY `idx_c1` (`c1`)

) ENGINE=InnoDB 

MYSQL中hash join有什么用

從圖中可以清晰的看到查詢已經(jīng)走了hash  join,那老的MYSQL DBA 可能會提出一個(gè)問題,到底這個(gè)hash join 比 nest loop 能好多少,可別和MYSQL 8 VS MYSQL 5.7一樣,誰快還不一定。下面做了一個(gè)對比,可以清晰的看到在某些情況下,HASH JOIN 在沒有索引的情況下,比添加了索引的NEST LOOP 的速度要快了一倍。

MYSQL中hash join有什么用

 所以到這里,

1 hash join 的確是查詢中需要的功能

2 hash join 的確在某些情況下 比 NEST LOOP 要快

在說明完這些問題后,我們的講講為什么

在MYSQL 中hash join的構(gòu)造包含兩個(gè)流程  1  build  2 probe

1建立的階段就是將需要進(jìn)行JOIN 的字段,進(jìn)行一個(gè)HASH 值的計(jì)算,而到底哪個(gè)表要進(jìn)行這樣的計(jì)算,整體SIZE 小的表將被選中,在內(nèi)存中構(gòu)建這個(gè)計(jì)算好值的表

2 匹配的過程,從另外一個(gè)表中將字段的值進(jìn)行計(jì)算,與內(nèi)存中的值匹配的就被選中,否則就拋棄。

這樣操作的好處也是顯而易見的,大大縮減比對的次數(shù)

NEST LOOP  如果是  N * S  則 hash join 可以比對為N * distinct S 如果distinct S 變化的值越少,則表的查詢速度越快。

當(dāng)然這樣還會產(chǎn)生另一個(gè)結(jié)果,就是我們可以在某些時(shí)候放棄JOIN 中建立索引了,如果建立了索引,則MYSQL 會傾向使用 NEST LOOP ,而不走HASH JOIN ,所以到了8.018 這個(gè)版本后,MYSQL 的查詢優(yōu)化,可能又要添加一條想法了。

當(dāng)然如果想要這個(gè)功能,首先先查查你的數(shù)據(jù)庫目前支持,或打開了這個(gè)功能沒有。

MYSQL中hash join有什么用

那hash joinj就無敵了,哪里都能用  NO NO NO  要使用它是有限制的,我們下面吧索引刪除

MYSQL中hash join有什么用

下面的查詢看似和上面的差不多,但就是沒有走HASH JOIN 

MYSQL中hash join有什么用

所以需要記住三個(gè)地方是是否能使用HASH JOIN 的前提

1 沒有索引

2 等值運(yùn)算

3 INNER JOIN 

感謝各位的閱讀!關(guān)于“MYSQL中hash join有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)頁名稱:MYSQL中hashjoin有什么用
網(wǎng)頁URL:http://www.2m8n56k.cn/article44/ipcehe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)ChatGPTApp設(shè)計(jì)面包屑導(dǎo)航網(wǎng)站設(shè)計(jì)公司搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
主站蜘蛛池模板: 成人欧美日韩视频一区 | 久草在线视频资源站 | 伊人久久综合热青草 | 国产三级精品在线 | 欧美成本人视频 | 国产精亚洲视频 | 亚州三级视频 | 欧美69精品国产成人 | 中文字幕日韩三级 | 九九99香蕉在线视频免费 | 女人张开腿 让男人桶视频 女人张开腿等男人桶免费视频 | 欧美亚洲中日韩中文字幕在线 | 日韩福利视频精品专区 | 国产在线精品成人一区二区三区 | 国产午夜免费视频片夜色 | 毛片在线播放a | 亚洲男女在线 | 国产区一区二区三 | 久久影院国产 | 亚洲免费成人网 | rion美乳弹出来四虎在线观看 | 亚洲网址在线观看 | 一区二区三区免费视频 www | 成人免费视频在线看 | 欧美高清一区二区三 | 伊人天堂在线 | 91精品国产乱码久久久久久 | 中文字幕在线免费观看视频 | 国产精品久久久久毛片 | 99精品福利视频 | 亚洲夜色夜色综合网站 | 久久九九久精品国产 | 性欧美一级毛片 | 九九视频国产 | 女人张开腿让男人捅的视频 | 国产99视频精品一区 | 日韩美女免费线视频 | 亚洲精品国产精品国自产观看 | 亚洲精品网址 | 亚洲aa| 国产精品日本 |