SQL執(zhí)行步驟的具體分析
更新時間:2017年10月10日 16:23:59 作者:牧師-Panda
這篇文章主要介紹了SQL執(zhí)行步驟的具體分析的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握SQL是如何執(zhí)行的,需要的朋友可以參考下
SQL執(zhí)行步驟的具體分析
先來看執(zhí)行語句的順序
(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子句中的左表和右表執(zhí)行笛卡爾集,產(chǎn)生虛擬表VT1
- ON 對虛擬表VT1進(jìn)行on篩選,只有那些符合join condition的行才被插入虛擬表VT2中
- JOIN 如果指定了outer join,那么保留表中未匹配的行作為外部行添加到虛擬表VT2中,產(chǎn)生虛擬表VT3。如果from子句包含兩個以上的表,則對上一個連接生成的結(jié)果表中VT3和下一個表重復(fù)執(zhí)行步驟1~步驟3,直到處理完所有的表為止。
- WHERE 對虛擬表VT3進(jìn)行where過濾條件,只有符合條件的才被插入到虛擬表VT4中。
- GROUP BY 根據(jù)group by子句中的列,對VT4中的記錄進(jìn)行分組操作,產(chǎn)生VT5.
- CUBE|ROLL UP 對表VT5進(jìn)行CUBE或者ROLLUP操作,產(chǎn)生表VT6.
- HAVING 對虛擬表VT6應(yīng)用having過濾器,只有符合條件的記錄才會被插入到虛擬表VT7中
- SELECT 第二次執(zhí)行select操作,選擇指定的列,插入到虛擬表VT8中。
- DISTINCT 去除重復(fù)數(shù)據(jù),產(chǎn)生虛擬表VT9。
- ORDER BY 將虛擬表VT9中的記錄按照指定的要求進(jìn)行排序操作,產(chǎn)生虛擬表VT10
- LIMIT 取出指定行的記錄,產(chǎn)生虛擬表VT11,并返回給查詢用戶
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
您可能感興趣的文章:
相關(guān)文章
關(guān)于Mysql查詢帶單引號及插入帶單引號字符串問題
本文主要介紹的是用mysql_real_escape_string對用戶提交的表單數(shù)據(jù)進(jìn)行轉(zhuǎn)義處理和通過addslashes以及mysql_escape_string這3個類似功能的函數(shù)用法區(qū)別2013-04-04mysql 5.6 從陌生到熟練之_數(shù)據(jù)庫備份恢復(fù)的實現(xiàn)方法
下面小編就為大家?guī)硪黄猰ysql 5.6 從陌生到熟練之_數(shù)據(jù)庫備份恢復(fù)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10mysql中日期的加減 date_add()、date_sub() 函數(shù)及用法小結(jié)
在Mysql中,date_add與date_sub分別是指對于日期的一個加減操作,date_add是指從日期中加上指定的時間間隔,date_sub是指從日期中減去指定的時間間隔,本文通過實例講解mysql中日期的加減 date_add()、date_sub() 函數(shù)及用法小結(jié),感興趣的朋友一起看看吧2023-11-11MySql 5.7.17 winx64的安裝配置詳細(xì)教程
這篇文章主要介紹了MySql 5.7.17 winx64的安裝配置教程,初始化數(shù)據(jù)庫、配置相關(guān)信息的方法在本文中介紹的非常詳細(xì),需要的朋友參考下2017-01-01