1、首先優(yōu)化原則,小表驅(qū)動大小,即小的數(shù)據(jù)集驅(qū)動大的數(shù)據(jù)集。select * from A where id in(select id from b),當B表的數(shù)據(jù)集必須小于A表的數(shù)據(jù)集時,用in優(yōu)于exists。
專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計制作、做網(wǎng)站、商城網(wǎng)站制作、微信營銷、系統(tǒng)平臺開發(fā), 與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,創(chuàng)新互聯(lián)的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。
2、a right join b,b是驅(qū)動表,a是被驅(qū)動表。a inner join b,MySQL會選擇相對小的表作為驅(qū)動表,大的表作為被驅(qū)動表。這里的大和小,你可以理解為真正參與關(guān)聯(lián)查詢的數(shù)據(jù)行多的為大表,少的為小表。
3、如果是JOIN的話,它是走嵌套查詢的。小表驅(qū)動大表,且通過索引字段進行關(guān)聯(lián)。如果表記錄比較少的話,還是OK的。大的話業(yè)務(wù)邏輯中可以控制處理。數(shù)據(jù)庫是最底層的,瓶頸往往是數(shù)據(jù)庫。
http://dev.mysql點抗 /downloads/connector/j/html 下載(Source and Binaries (zip)),解壓縮就可以了,這是MySQLguan 方網(wǎng)站提供的下載,應(yīng)該沒問題。
本想給你驅(qū)動包,可是不知道你什么系統(tǒng)。你去自己下載吧 選定之后點download進入下載頁面。
JDBC 不用安裝,就是一個 jar 包,到 MySQL guan 方網(wǎng)站上去下載就可以了,下載地址是:http://dev.mysql點抗 /downloads/connector/j/html 下載 zip 的點 Pick a mirror 找個鏡像站點下載。
你裝了mysql了沒?可以自己去下載mysql驅(qū)動的。
結(jié)果顯示t2是驅(qū)動表,t1是被驅(qū)動表。t2是1000條數(shù)據(jù)按理說是大表應(yīng)該是被驅(qū)動表,與 博文A , 博文B 的結(jié)論又不一致了。
首先,MySql join連接可以連接兩張或更多的數(shù)據(jù)表,但是并沒有誰是“驅(qū)動表”之說。Join分為inner join內(nèi)連接和outer join外連接兩種形式,外連接還可以進一步分為左連接和右連接。
因為表連接查詢時后面的表必然會進行全表掃描,所以數(shù)據(jù)少的放后面,提高sql語句的執(zhí)行效率。操作方法如下:首先優(yōu)化原則,小表驅(qū)動大小,即小的數(shù)據(jù)集驅(qū)動大的數(shù)據(jù)集。
也就是兩個表做外連接的時候,以哪個表為驅(qū)動方,去匹配表中匹配合乎條件的記錄。
nestedloopssemi是nestedloop連接的變種,又叫半連接。原理與nl相同,通常用于in,exist操作,這種操作join時候,通常查找到一條紀錄就可以了,所以用semi表示。
===總結(jié)=== 開啟慢查詢?nèi)罩?,設(shè)置閥值,比如超過5秒就是慢SQL,并把它抓取出來。explain+慢SQL 分析 show profile 查詢SQL在MySQL服務(wù)器里面的執(zhí)行細節(jié)和聲明周期。