MySQL的語句執行順序

2021-09-12 23:18:48 字數 673 閱讀 9257

mysql的語句一共分為11步,如下圖所標註的那樣,最先執行的總是from操作,最後執行的是limit操作。其中每乙個操作都會產生一張虛擬的表,這個虛擬的表作為乙個處理的輸入,只是這些虛擬的表對使用者來說是透明的,但是只有最後乙個虛擬的表才會被作為結果返回。如果沒有在語句中指定某乙個子句,那麼將會跳過相應的步驟。

form: 對from的左邊的表和右邊的表計算笛卡爾積。產生虛表vt1

on: 對虛表vt1進行on篩選,只有那些符合的行才會被記錄在虛表vt2中。

join: 如果指定了outer join(比如left join、 right join),那麼保留表中未匹配的行就會作為外部行新增到虛擬表vt2中,產生虛擬表vt3, rug from子句中包含兩個以上的表的話,那麼就會對上乙個join連線產生的結果vt3和下乙個表重複執行步驟1~3這三個步驟,一直到處理完所有的表為止。

where: 對虛擬表vt3進行where條件過濾。只有符合的記錄才會被插入到虛擬表vt4中。

group by: 根據group by子句中的列,對vt4中的記錄進行分組操作,產生vt5.

cube | rollup: 對錶vt5進行cube或者ro

MySQL的語句執行順序和子查詢執行順序

見原文吧 mysql的語句執行順序 houqijun 我再描述也沒人家好.參考 sql巢狀子查詢和相關子查詢的執行過程有什麼區別 推薦 南無 包含詳細的舉例和步驟說明 子查詢又稱內部查詢,而包含子查詢的語句稱之外部查詢 又稱主查詢 所有的子查詢可以分為兩類,即相關子查詢和非相關子查詢。執行過程 從外...

MySQL語句執行順序和編寫順序例項解析

select語句完整語法 select distinct from join on where 程式設計客棧here condition group by h ing 程式設計客棧 order by limit 執行順序 from join on where group by h ing selec...

for迴圈的語句執行順序

在乙個技術qq群中,試著做了一道c的題,感覺是考察for迴圈的執行流程.原題 在c語言中,下列 的輸出結果是 選擇一項 void main j printf d,d i,j a 0,109,9 b 0,10 10,10c 10,10d 9,11 群裡居然有不少人都選了b,那個提問者還一直在問正確的結...