婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL Server 2008的邏輯查詢處理步驟

SQL Server 2008的邏輯查詢處理步驟

熱門標簽:分享百度地圖標注多個位置 廣東防封卡外呼系統原理是什么 菏澤語音電銷機器人加盟公司 地圖標注牌 長沙智能外呼系統 知名電銷機器人價格 電銷機器人公司 需要哪些牌照 外呼系統改進 湖南電腦外呼系統平臺

最近我則剛剛收到了微軟最有價值專家項目組寄來的該書的SQL Server 2008英文版本-《Inside Microsoft SQL Server 2008:T-SQL Querying》(http://www.microsoft.com/learning/en/us/book.aspx?ID=12804locale=en-us),大致翻了一下,發現內容變動不少,既有新增的章節,也有基于SQL Server 2005或2008新技術重新書寫的SQL查詢示例。

我先就邏輯查詢處理步驟方面給大家介紹一下兩本書之間的差異吧,因為我也在剛開始閱讀,以后逐步給大家介紹。

我們知道,查詢的邏輯處理過程是分階段完成的,每個階段都會產生一個虛擬表,該虛擬表會作為下一個階段的輸入。但是,這些過程中間階段生成的虛擬表對于查詢用戶是不可用的,只有最后階段所生成的虛擬表(即查詢結果)才返回給查詢用戶。

在該書的SQL Server 2005版本中,將一個聯接查詢的邏輯處理分為了10個步驟:

(8) SELECT  (9) DISTINCT  (11) TOP_specification> select_list>

(1)  FROM left_table>

(3)    join_type> JOIN right_table>

(2)      ON join_condition>

(4)  WHERE where_condition>

(5)  GROUP BY group_by_list>

(6)  WITH {CUBE | ROLLUP}

(7)  HAVING having_condition>

(10) ORDER BY order_by_list>

而在SQL Server 2008版本中,則對邏輯階段的描述擴展到了所有的邏輯語句,而不僅僅是聯接處理,如APPLY、PIVOT等。按這種分類方式,將邏輯步驟分成了6部分,部分步驟中包含了子步驟。

(5)SELECT (5-2)DISTINCT (5-3)TOP_specification> (5-1)select_list>

(1)FROM (1-J) left_table> join_type> JOIN right_table> ON join_condition>

        |(1-A) left_table> apply_type> APPLY right_table_expression> AS alias>

        |(1-P) left_table> PIVOT(pivot_specifications>) AS alias>

        |(1-U) left_table> UNPIVOT(unpivot_specifications>) AS alias>

(2)WHERE where_condition>

(3)GROUP BY group_by_list> (3-CR)WITH {CUBE | ROLLUP}

(4)HAVING having_condition>

(6)ORDER BY order_by_list>

下圖更詳細地描述了各個處理步驟的流程。

這種步驟分類相比2005版本而言更加全面和具體。上面步驟中的3-CR是我添加上去的,我覺得這樣的描述更加全面。3-CR中的WITH ROLLUP和WITH CUBE參數,在SQL Server 2008中已經被GROUP BY子句的GROUPING SETS、ROLLUP和CUBE運算符代替,不再推薦使用不符合ISO標準的WITH ROLLUP、WITH CUBE和ALL語法。但是,這并不影響邏輯處理的順序。

下面是對邏輯處理過程中各個步驟的說明,請注意虛擬表(VTn)的生成步驟:

·    步驟1(FROM):該步驟中用于驗證查詢的源表,并處理表操作符。每個表操作符應用于一系列子步驟。例如,在上面用于聯接的(1-J)步驟中會涉及如下的子步驟。最終這些子步驟完成后,將生成虛擬表VT1。

Ø  (1-J1):執行left_table和right_table兩個表的交叉聯接(笛卡兒乘積),生成虛擬表VT1-J1;

Ø  (1-J2):對笛卡兒乘積應用ON篩選器,生成虛擬表VT1-J2;

Ø  (1-J3):如果是外部聯接,會在該步驟中將被ON篩選掉的外部行添加到VT1-J2中,生成VT1-J3。否則,將跳過該步驟。

·    步驟2(WHERE):對VT1應用WHERE篩選器,將符合篩選條件的行插入到VT2中。

·    步驟3(GROUP BY):按GROUP BY子句中的列列表對VT2中的行分組,生成VT3。如果語句中包含WITH CUBE或WITH ROLLUP,則將分組統計結果再次加總后插入VT3,生成VT3-RC。

·    步驟4(HAVING):對VT3應用HAVING篩選器,將符合篩選條件的行插入到VT4。

·    步驟5(SELECT):處理SELECT子句中的元素,生成VT5。

u  (5-1)計算表達式:該步驟計算SELECT列表中的表達式,生成VT5-1;

u  (5-2)DISTINCT:從VT5-1中移除重復行,生成VT5-2;

u  (5-3)TOP:該步驟根據ORDER BY子句中指定的排序規則,從VT5-2的開始處篩選出指定數量或比例的行。

·    步驟6(ORDER BY):該步驟對VT5-3中的行按ORDER BY子句中的列列表進行排序,生成一個游標VC6。

 

 

 

標簽:福建 商洛 美容院 呼和浩特 泉州 天水 西寧 珠海

巨人網絡通訊聲明:本文標題《SQL Server 2008的邏輯查詢處理步驟》,本文關鍵詞  SQL,Server,2008,的,邏輯,查詢,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server 2008的邏輯查詢處理步驟》相關的同類信息!
  • 本頁收集關于SQL Server 2008的邏輯查詢處理步驟的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 镇平县| 襄城县| 无极县| 无锡市| 赤城县| 湟中县| 包头市| 永兴县| 石狮市| 临桂县| 清新县| 洪雅县| 阜阳市| 吴桥县| 洛隆县| 定陶县| 浑源县| 托克逊县| 津南区| 兴文县| 大宁县| 新津县| 淮安市| 福贡县| 安新县| 汤阴县| 安仁县| 郑州市| 双城市| 兴业县| 南通市| 普兰店市| 榕江县| 莱芜市| 商南县| 韶山市| 定州市| 银川市| 泗阳县| 兰坪| 崇明县|