SQL Server SQL語句執行順序

FrankYou發表於2016-07-20

執行順序:

1.FROM:對FROM子句中前兩個表執行笛卡爾積生成虛擬表vt1

2.ON:對vt1表應用ON篩選器只有滿足 為真的行才被插入vt2

3.OUTER(join):如果指定了 OUTER JOIN保留表(preserved table)中未找到的行將行作為外部行新增到vt2 生成t3如果from包含兩個以上表則對上一個聯結生成的結果表和下一個表重複執行步驟和步驟直接結束

4.WHERE:對vt3應用 WHERE 篩選器只有使 為true的行才被插入vt4

5.GROUP BY:按GROUP BY子句中的列列表對vt4中的行分組生成vt5

6.CUBE|ROLLUP:把超組(supergroups)插入vt6 生成vt6

7.HAVING:對vt6應用HAVING篩選器只有使 為true的組才插入vt7

8.SELECT:處理select列表產生vt8

9.DISTINCT:將重複的行從vt8中去除產生vt9

10.ORDER BY:將vt9的行按order by子句中的列列表排序生成一個遊標vc10

11.TOP:從vc10的開始處選擇指定數量或比例的行生成vt11 並返回撥用者

相關文章