SQL Server如何處理到達資料庫引擎的查詢

來源:互聯網
上載者:User

當一個查詢到達資料庫引擎時,SQL SERVER執行兩個主要的步驟來產生期望的查詢結果。第一步是查詢編譯,它產生查詢計劃,第二步執行這個查詢計劃。

 

SQL SERVER 2005中的查詢編譯由三個步驟組成:分析、代數化及查詢最佳化。完成這些步驟後,編譯器把經過最佳化的查詢計劃儲存到過程緩衝中。在這裡,執行引擎把該計劃轉換為可執行檔形式,然後執行其中的步驟以產生查詢結果。如果今後再次執行相同的查詢或預存程序時,過程緩衝已經包含了該計劃,則跳過編譯步驟,直接重用緩衝的計劃來執行該查詢或預存程序。

 

關於SQL Server的最佳化

SQL SERVER並不最佳化批處理中的每條語句。只最佳化那些訪問表而且可能產生多個執行計畫的語句。SQL SERVER最佳化所有DML(資料操作語言)語句,即SELECT 、DELECT和UPDATE語句。除了DML,其他一些T-SQL語句也會被最佳化,CREATE INDEX便是其中之一,只有被最佳化過的語句才會產生查詢計劃。

 

關於SQL中的分組

GROUP BY或HAVING之類顯式子句並不是使SELECT列表被分組的唯一因素。根據SQL的規定,只要出現綁定到特定列表的彙總函式,即使沒有GROUP BY或HAVING子句,也會使SELECT列表分組。下面是一個簡單的樣本:

SELECT c1,MAX(c2) FROM dbo.T1;

這是一個分組SELECT,因為查詢中包含了一個MAX彙總。又因為它是一個分組SELECT,在其中使用非聚集的列c1是不合法的,所以該查詢不正確。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.