1. 程式人生 > 其它 >mysql書寫順序和執行順序

mysql書寫順序和執行順序

書寫順序:

SELECT→FROM→JOIN→ON→WHERE→GROUP BY→HAVING→ORDER BY→LIMIT

執行順序:

FROM→ON→JOIN→WHERE→GROUP BY→HAVING→SELECT→DISTINCT→ORDER BY→LIMIT

執行順序:
1.from 載入from關鍵詞後的表,計算笛卡爾積,生成虛擬表vt1
2.篩選關聯表中滿足on表示式的資料,保留主表資料,生成虛擬表vt2
join表示要關聯的表,on代表連線條件
3.外連線,執行on會將主表中不符合on條件的資料也載入進來作為外部行
4.from子句涉及多張表,則重複1-3,直至所有的表都載入完畢,更新虛擬表vt3
5.執行where表示式,篩選資料生成表示式vt5
6.執行group by子句分組,分組會把子句組合成唯一值,且每個唯一值只包含一行,生成虛擬表vt5
這一步開始才可以使用select中的別名,它返回的是一個遊標,而不是一張表,
在where中不可以使用select中的別名,而having卻可以。
7.執行聚合函式,生成虛擬表vt6
8.執行having,篩選資料並生成vt7
9.執行select,篩選vt7資料並生成vt8
10.執行distinct,去重vt8並生成vt9
11.order by 排序vt9 耗費資源
12執行limit並返回