SQL執行步驟的具體分析
阿新 • • 發佈:2020-01-09
SQL執行步驟的具體分析
先來看執行語句的順序
(8)select (9)distinct A (1)from Ta (3)join Tb (2)on XXX (4)where XXX (5)group by XXX (6)with {cube|roll up} (7)having XXX (10)order by XXX (11)limit XXX
接著我們看一下具體分析查詢處理的各個階段:
- FROM 對from子句中的左表和右表執行笛卡爾集,產生虛擬表VT1
- ON 對虛擬表VT1進行on篩選,只有那些符合join condition的行才被插入虛擬表VT2中
- JOIN 如果指定了outer join,那麼保留表中未匹配的行作為外部行新增到虛擬表VT2中,產生虛擬表VT3。如果from子句包含兩個以上的表,則對上一個連線生成的結果表中VT3和下一個表重複執行步驟1~步驟3,直到處理完所有的表為止。
- WHERE 對虛擬表VT3進行where過濾條件,只有符合條件的才被插入到虛擬表VT4中。
- GROUP BY 根據group by子句中的列,對VT4中的記錄進行分組操作,產生VT5.
- CUBE|ROLL UP 對錶VT5進行CUBE或者ROLLUP操作,產生表VT6.
- HAVING 對虛擬表VT6應用having過濾器,只有符合條件的記錄才會被插入到虛擬表VT7中
- SELECT 第二次執行select操作,選擇指定的列,插入到虛擬表VT8中。
- DISTINCT 去除重複資料,產生虛擬表VT9。
- ORDER BY 將虛擬表VT9中的記錄按照指定的要求進行排序操作,產生虛擬表VT10
- LIMIT 取出指定行的記錄,產生虛擬表VT11,並返回給查詢使用者
如有疑問請留言或者到本站社群交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支援!