真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SQL執(zhí)行順序講析

下文內(nèi)容主要給大家?guī)鞸QL執(zhí)行順序講析,這里所講到的知識,與書籍略有不同,都是創(chuàng)新互聯(lián)專業(yè)技術(shù)人員在與用戶接觸過程中,總結(jié)出來的,具有一定的經(jīng)驗分享價值,希望給廣大讀者帶來幫助。

創(chuàng)新互聯(lián)專注骨干網(wǎng)絡(luò)服務(wù)器租用十多年,服務(wù)更有保障!服務(wù)器租用,成都聯(lián)通服務(wù)器托管 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問。靈活、實現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務(wù)器。

一、手寫SQL順序

select 
from 
 join  on 
where 
group by 
having 
order by 
limit 

二、MySQL執(zhí)行順序

SQL執(zhí)行順序講析

from 
on 
 join 
where 
group by 

having 
select 
distinct
order by 
limit 

三、MySql執(zhí)行順序理解

第一步:加載from子句的前兩個表計算笛卡爾積,生成虛擬表vt1;

第二步:篩選關(guān)聯(lián)表符合on表達式的數(shù)據(jù),保留主表,生成虛擬表vt2;

第三步:如果使用的是外連接,執(zhí)行on的時候,會將主表中不符合on條件的數(shù)據(jù)也加載進來,做為外部行

第四步:如果from子句中的表數(shù)量大于2,則重復(fù)第一步到第三步,直至所有的表都加載完畢,更新vt3;

第五步:執(zhí)行where表達式,篩選掉不符合條件的數(shù)據(jù)生成vt4;

第六步:執(zhí)行g(shù)roup by子句。group by 子句執(zhí)行過后,會對子句組合成唯一值并且對每個唯一值只包含一行,生成vt5,。一旦執(zhí)行g(shù)roup by,后面的所有步驟只能得到vt5中的列(group by的子句包含的列)和聚合函數(shù)。

第七步:執(zhí)行聚合函數(shù),生成vt6;

第八步:執(zhí)行having表達式,篩選vt6中的數(shù)據(jù)。having是唯一一個在分組后的條件篩選,生成vt7;

第九步:從vt7中篩選列,生成vt8;

第十步:執(zhí)行distinct,對vt8去重,生成vt9。其實執(zhí)行過group by后就沒必要再去執(zhí)行distinct,因為分組后,每組只會有一條數(shù)據(jù),并且每條數(shù)據(jù)都不相同。

第十一步:對vt9進行排序,此處返回的不是一個虛擬表,而是一個游標(biāo),記錄了數(shù)據(jù)的排序順序,此處可以使用別名;

第十二步:執(zhí)行l(wèi)imit語句,將結(jié)果返回給客戶端

四、其他

1、on和where的區(qū)別?

簡單地說,當(dāng)有外關(guān)聯(lián)表時,on主要是針對外關(guān)聯(lián)表進行篩選,主表保留,當(dāng)沒有關(guān)聯(lián)表時,二者作用相同。

例如在左外連時,首先執(zhí)行on,篩選掉外連表中不符合on表達式的數(shù)據(jù),而where的篩選是對主表的篩選。

2、圖解

SQL執(zhí)行順序講析

對于以上關(guān)于SQL執(zhí)行順序講析,如果大家還有更多需要了解的可以持續(xù)關(guān)注我們創(chuàng)新互聯(lián)的行業(yè)推新,如需獲取專業(yè)解答,可在官網(wǎng)聯(lián)系售前售后的,希望該文章可給大家?guī)硪欢ǖ闹R更新。

 


本文標(biāo)題:SQL執(zhí)行順序講析
瀏覽路徑:http://weahome.cn/article/gihjoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部