在之前的版本里,我們是用explain命令來查看SQL的具體執(zhí)行計(jì)劃。在MySQL 8.0.18版本里新增了explain擴(kuò)展,一個(gè)是explain format=tree,另一個(gè)是基于explain format=tree延伸擴(kuò)展的Explain Analyze,今天我們查看下該命令是怎樣執(zhí)行的。
創(chuàng)新互聯(lián)建站是專業(yè)的安福網(wǎng)站建設(shè)公司,安福接單;提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行安福網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
還是用sbtest1表做測(cè)試。
explain?analyze?select?count(*)?from?sbtest1;
這個(gè)結(jié)果很讓人奇怪,不加where條件,啥都不能顯示出來,貌似是個(gè)BUG?
得,加個(gè)where id>0再試試。
explain?analyze?select?count(*)?from?sbtest1?where?id>0;
注意看紅色劃線部分,它內(nèi)部會(huì)運(yùn)行查詢并測(cè)量執(zhí)行時(shí)間。
含義解釋:
1) cost部分的rows=4936262,是和explain生成的結(jié)果一致,都是估算讀取的行數(shù)。
2)actual部分的rows=10000000,是執(zhí)行這條SQL返回的真正結(jié)果,見如下圖所示
3)actual time=62004.565(單位ms毫秒),轉(zhuǎn)換為秒是這條SQL執(zhí)行的時(shí)間為62秒,但其實(shí)是有很大的誤差的,你看上面的
執(zhí)行時(shí)間7.98秒,就四舍五入為8秒,62/8大約誤差達(dá)到了77%左右,因此我們不能真正相信這些數(shù)字。