-
FROM
-
ON
-
JOIN
-
WHERE
-
GROUP BY
-
WITH CUBE or WITH ROLLUP
-
HAVING
-
SELECT
-
DISTINCT
-
ORDER BY
- TOP
詳細的處理邏輯如下:
(1)FROM,ON,JOIN
該步驟中用於驗證查詢的源表,並處理表操作符。每個表操作符應用於一系列子步驟。
- 執行left_table和right_table兩個表的交叉聯接(笛卡爾積),生成虛擬表VT1-J1
- 對笛卡爾積應用ON篩選器,生成虛擬表VT1-J2。(在此過程中,null與其他值(也包含null)將返回unknown,只有返回爲true的才能保留)(如果ANSI_NULLS 選項設置爲OFF時,null=null將返回true)
- 查看join類型,如果是外部聯接,那麼將在上面步驟篩選掉的外部行重新添加到VT1-J2,從而生成VT1-J3。如果其他聯接,則跳過此步驟。
可以看出cross join只執行第一步驟,而inner join則執行第一和第二步驟,而outer join則執行了三個步驟。
- 計算表達式:該步驟計算select列表中的表達式,生成VT5-1,
- DISTINCT:從VT5-1剔除重複行,生成VT5-2