1. 程式人生 > 資料庫 >SQL執行步驟的具體分析

SQL執行步驟的具體分析

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 

接著我們看一下具體分析查詢處理的各個階段:

  1. FROM 對from子句中的左表和右表執行笛卡爾集,產生虛擬表VT1
  2. ON 對虛擬表VT1進行on篩選,只有那些符合join condition的行才被插入虛擬表VT2中
  3. JOIN 如果指定了outer join,那麼保留表中未匹配的行作為外部行新增到虛擬表VT2中,產生虛擬表VT3。如果from子句包含兩個以上的表,則對上一個連線生成的結果表中VT3和下一個表重複執行步驟1~步驟3,直到處理完所有的表為止。
  4. WHERE 對虛擬表VT3進行where過濾條件,只有符合條件的才被插入到虛擬表VT4中。
  5. GROUP BY 根據group by子句中的列,對VT4中的記錄進行分組操作,產生VT5.
  6. CUBE|ROLL UP 對錶VT5進行CUBE或者ROLLUP操作,產生表VT6.
  7. HAVING 對虛擬表VT6應用having過濾器,只有符合條件的記錄才會被插入到虛擬表VT7中
  8. SELECT 第二次執行select操作,選擇指定的列,插入到虛擬表VT8中。
  9. DISTINCT 去除重複資料,產生虛擬表VT9。
  10. ORDER BY 將虛擬表VT9中的記錄按照指定的要求進行排序操作,產生虛擬表VT10
  11. LIMIT 取出指定行的記錄,產生虛擬表VT11,並返回給查詢使用者

如有疑問請留言或者到本站社群交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支援!