sql語句執(zhí)行順序

sql語句執(zhí)行順序

ID:25580147

大?。?9.98 KB

頁數(shù):3頁

時間:2018-11-21

sql語句執(zhí)行順序_第1頁
sql語句執(zhí)行順序_第2頁
sql語句執(zhí)行順序_第3頁
資源描述:

《sql語句執(zhí)行順序》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。

1、一、sql語句的執(zhí)行步驟:1)語法分析,分析語句的語法是否符合規(guī)范,衡量語句中各表達式的意義。2)語義分析,檢查語句中涉及的所有數(shù)據(jù)庫對象是否存在,且用戶有相應的權限。3)視圖轉換,將涉及視圖的查詢語句轉換為相應的對基表查詢語句。4)表達式轉換,將復雜的SQL表達式轉換為較簡單的等效連接表達式。5)選擇優(yōu)化器,不同的優(yōu)化器一般產(chǎn)生不同的“執(zhí)行計劃”6)選擇連接方式,ORACLE有三種連接方式,對多表連接ORACLE可選擇適當?shù)倪B接方式。7)選擇連接順序,對多表連接ORACLE選擇哪一對表先連接,選擇這兩表中哪個表做為源數(shù)據(jù)表。8)選擇數(shù)據(jù)的搜索路徑,根據(jù)

2、以上條件選擇合適的數(shù)據(jù)搜索路徑,如是選用全表搜索還是利用索引或是其他的方式。9)運行“執(zhí)行計劃”二、oracle共享原理:???????ORACLE將執(zhí)行過的SQL語句存放在內存的共享池(sharedbufferpool)中,可以被所有的數(shù)據(jù)庫用戶共享當你執(zhí)行一個SQL語句(有時被稱為一個游標)時,如果它和之前的執(zhí)行過的語句完全相同,ORACLE就能很快獲得已經(jīng)被解析的語句以及最好的執(zhí)行路徑.這個功能大大地提高了SQL的執(zhí)行性能并節(jié)省了內存的使用三、oracle語句提高查詢效率的方法:1:wherecolumnin(select*from...where

3、...);2:...whereexists(select'X'from...where...);第二種格式要遠比第一種格式的效率高。在Oracle中可以幾乎將所有的IN操作符子查詢改寫為使用EXISTS的子查詢使用EXIST,Oracle系統(tǒng)會首先檢查主查詢,然后運行子查詢直到它找到第一個匹配項,這就節(jié)省了時間Oracle系統(tǒng)在執(zhí)行IN子查詢時,首先執(zhí)行子查詢,并將獲得的結果列表存放在在一個加了索引的臨時表中避免使用having字句避免使用HAVING子句,HAVING只會在檢索出所有記錄之后才對結果集進行過濾.這個處理需要排序,總計等操作.如果能通過W

4、HERE子句限制記錄的數(shù)目,那就能減少這方面的開銷SQLSelect語句完整的執(zhí)行順序:1、from子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù);2、where子句基于指定的條件對記錄行進行篩選;3、groupby子句將數(shù)據(jù)劃分為多個分組;4、使用聚集函數(shù)進行計算;5、使用having子句篩選分組;6、計算所有的表達式;7、使用orderby對結果集進行排序。Oraclesql語句執(zhí)行順序四、SQLSelect語句完整的執(zhí)行順序:1、from子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù);2、where子句基于指定的條件對記錄行進行篩選;3、groupby子句將數(shù)據(jù)劃分為多個分組;4、使

5、用聚集函數(shù)進行計算;5、使用having子句篩選分組;6、計算所有的表達式;7、select的字段;8、使用orderby對結果集進行排序。SQL語言不同于其他編程語言的最明顯特征是處理代碼的順序。在大多數(shù)據(jù)庫語言中,代碼按編碼順序被處理。但在SQL語句中,第一個被處理的子句式FROM,而不是第一出現(xiàn)的SELECT。SQL查詢處理的步驟序號:(8)1SELECT(9)DISTINCT(11)2(1)FROM3(3)JOIN

6、>4(2)ON5(4)WHERE6(5)GROUPBY7(6)WITH{CUBE

7、ROLLUP}8(7)HAVING9(10)ORDERBY  以上每個步驟都會產(chǎn)生一個虛擬表,該虛擬表被用作下一個步驟的輸入。這些虛擬表對調用者(客戶端應用程序或者外部查詢)不可用。只有最后一步生成的表才會會給調用者。如果沒有在查詢中指定某一個子句,將跳過相應的步驟?! ∵壿嫴樵兲幚黼A段簡介:  1、FROM:對F

8、ROM子句中的前兩個表執(zhí)行笛卡爾積(交叉聯(lián)接),生成虛擬表VT1?! ?、ON:對VT1應用ON篩選器,只有那些使為真才被插入到TV2?! ?、OUTER(JOIN):如果指定了OUTERJOIN(相對于CROSSJOIN或INNERJOIN),保留表中未找到匹配的行將作為外部行添加到VT2,生成TV3。如果FROM子句包含兩個以上的表,則對上一個聯(lián)接生成的結果表和下一個表重復執(zhí)行步驟1到步驟3,直到處理完所有的表位置?! ?、WHERE:對TV3應用WHERE篩選器,只有使為true的行才插入TV4?! ?、GROUPBY:按GROUPBY子句中的列列

9、表對TV4中的行進行分組,生成TV5?! ?、CUTE

10、ROLLUP:把超組插入

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。