mysql怎么選擇驅(qū)動(dòng)表 mysql80驅(qū)動(dòng)類(lèi)

表連接中的驅(qū)動(dòng)表與被驅(qū)動(dòng)表

MySQL選擇驅(qū)動(dòng)表與被驅(qū)動(dòng)表是基于優(yōu)化器優(yōu)化后的,小表是驅(qū)動(dòng)表,大表是被驅(qū)動(dòng)表。 基于優(yōu)化器優(yōu)化后開(kāi)篇的 博文A與B 結(jié)論成立。

創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比興縣網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式興縣網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋興縣地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴(lài)。

table中檢索到與之匹配的行。Outer table: 小表、驅(qū)動(dòng)表 Inner table: 被驅(qū)動(dòng)表、大表 (可用ordered提示來(lái)改變CBO默認(rèn)的驅(qū)動(dòng)表,可用USE_NL(table_name1 table_name2)提示來(lái)強(qiáng)制使用nested loop。

實(shí)則為 驅(qū)動(dòng)表扇出*被驅(qū)動(dòng)每次掃描行數(shù)*filtered*成本常數(shù) ,即 20*200*10%*0.2 。

首先,MySql join連接可以連接兩張或更多的數(shù)據(jù)表,但是并沒(méi)有誰(shuí)是“驅(qū)動(dòng)表”之說(shuō)。Join分為inner join內(nèi)連接和outer join外連接兩種形式,外連接還可以進(jìn)一步分為左連接和右連接。

聯(lián)表查詢注意誰(shuí)是驅(qū)動(dòng)表&你搞不清楚誰(shuí)join誰(shuí)更好時(shí)請(qǐng)放_(tái)MySQL

結(jié)果顯示t2是驅(qū)動(dòng)表,t1是被驅(qū)動(dòng)表。t2是1000條數(shù)據(jù)按理說(shuō)是大表應(yīng)該是被驅(qū)動(dòng)表,與 博文A , 博文B 的結(jié)論又不一致了。

首先,MySql join連接可以連接兩張或更多的數(shù)據(jù)表,但是并沒(méi)有誰(shuí)是“驅(qū)動(dòng)表”之說(shuō)。Join分為inner join內(nèi)連接和outer join外連接兩種形式,外連接還可以進(jìn)一步分為左連接和右連接。

因?yàn)楸磉B接查詢時(shí)后面的表必然會(huì)進(jìn)行全表掃描,所以數(shù)據(jù)少的放后面,提高sql語(yǔ)句的執(zhí)行效率。操作方法如下:首先優(yōu)化原則,小表驅(qū)動(dòng)大小,即小的數(shù)據(jù)集驅(qū)動(dòng)大的數(shù)據(jù)集。

mysql在連表查詢時(shí)是小表驅(qū)動(dòng)大表嗎

a inner join b,MySQL會(huì)選擇相對(duì)小的表作為驅(qū)動(dòng)表,大的表作為被驅(qū)動(dòng)表。這里的大和小,你可以理解為真正參與關(guān)聯(lián)查詢的數(shù)據(jù)行多的為大表,少的為小表。

開(kāi)啟慢查詢?nèi)罩?,設(shè)置閥值,比如超過(guò)5秒就是慢SQL,并把它抓取出來(lái)。explain+慢SQL 分析 show profile 查詢SQL在MySQL服務(wù)器里面的執(zhí)行細(xì)節(jié)和聲明周期。

如果是JOIN的話,它是走嵌套查詢的。小表驅(qū)動(dòng)大表,且通過(guò)索引字段進(jìn)行關(guān)聯(lián)。如果表記錄比較少的話,還是OK的。大的話業(yè)務(wù)邏輯中可以控制處理。數(shù)據(jù)庫(kù)是最底層的,瓶頸往往是數(shù)據(jù)庫(kù)。

MySQL表連接之驅(qū)動(dòng)表與被驅(qū)動(dòng)表

MySQL選擇驅(qū)動(dòng)表與被驅(qū)動(dòng)表是基于優(yōu)化器優(yōu)化后的,小表是驅(qū)動(dòng)表,大表是被驅(qū)動(dòng)表。 基于優(yōu)化器優(yōu)化后開(kāi)篇的 博文A與B 結(jié)論成立。

首先,MySql join連接可以連接兩張或更多的數(shù)據(jù)表,但是并沒(méi)有誰(shuí)是“驅(qū)動(dòng)表”之說(shuō)。Join分為inner join內(nèi)連接和outer join外連接兩種形式,外連接還可以進(jìn)一步分為左連接和右連接。

一般情況下,遵循如下規(guī)則:a left join b,a是驅(qū)動(dòng)表,b是被驅(qū)動(dòng)表。a right join b,b是驅(qū)動(dòng)表,a是被驅(qū)動(dòng)表。a inner join b,MySQL會(huì)選擇相對(duì)小的表作為驅(qū)動(dòng)表,大的表作為被驅(qū)動(dòng)表。

然后再?gòu)尿?qū)動(dòng)表結(jié)果集中拿出另一條記錄,再一次把被驅(qū)動(dòng)表的記錄加載到內(nèi)存中一遍,周而復(fù)始,驅(qū)動(dòng)表結(jié)果集中有多少條記錄,就得把被驅(qū)動(dòng)表從磁盤(pán)上加載到內(nèi)存中多少次。

實(shí)則為 驅(qū)動(dòng)表扇出*被驅(qū)動(dòng)每次掃描行數(shù)*filtered*成本常數(shù) ,即 20*200*10%*0.2 。

標(biāo)題名稱(chēng):mysql怎么選擇驅(qū)動(dòng)表 mysql80驅(qū)動(dòng)類(lèi)
URL鏈接:http://muchs.cn/article35/dgdhgsi.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站改版、小程序開(kāi)發(fā)、云服務(wù)器、面包屑導(dǎo)航

廣告

聲明:本網(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)站托管運(yùn)營(yíng)