sqlserver2005預編譯
自動引數化是一個過程,SQL Server 通過這個過程將出現在 SQL 語句中的文字常量替換為諸如 @p1 和 @p2 等引數。然後,SQL 語句的已編譯計劃以引數化的形式被快取在計劃快取中,以便後續的語句(只是在文字常量的值上有所不同)可重用已快取的計劃。正如第四部分所提到的,只有引數值不影響查詢計劃選擇的 SQL 語句才會被自動引數化。
SQL Server 的 LPE(語言處理和執行)元件可引數化 SQL 語句。當發現文字常量的值不影響查詢計劃選擇時,QP(查詢處理器)元件將宣告 LPE 的自動引數化嘗試是“安全的”,並繼續執行自動引數化;否則,將宣告自動引數化是“不安全的”,並將其中止。在第 11.5 節提到的一些效能計數器的值(‘SQLServer:SQL 統計’類別)報告了有關自動引數化的統計資訊。
下方列表列舉了 SQL Server 2005 不對其進行自動引數化的語句型別。
• | 帶有 IN 子句的查詢不會被自動引數化。例如: | ||||||||||||||||||||||
• | WHERE ProductID IN (707, 799, 905) | ||||||||||||||||||||||
• | BULK INSERT 語句。 | ||||||||||||||||||||||
• | 帶有一個含變數的 SET 子句的 UPDATE 語句。例如: UPDATE Sales.Customer SET CustomerType = N'S' WHERE CustomerType = @a | ||||||||||||||||||||||
• | 帶有 UNION 的 SELECT 語句。 | ||||||||||||||||||||||
• | 帶有 INTO 子句的 SELECT 語句。 | ||||||||||||||||||||||
• | 帶有 FOR BROWSE 子句的 SELECT 或 UPDATE 語句。 | ||||||||||||||||||||||
• | 帶有使用 OPTION 子句指定的查詢提示的語句 | ||||||||||||||||||||||
• | 其 SELECT 列表包含 DISTINCT 的 SELECT 語句。 | ||||||||||||||||||||||
• | 帶有 TOP 子句的語句。 | ||||||||||||||||||||||
• | WAITFOR 語句。 | ||||||||||||||||||||||
• | 帶有 FROM 子句的 DELETE 或 UPDATE 語句。 | ||||||||||||||||||||||
• | 當 FROM 子句含有下列之一時:
| ||||||||||||||||||||||
• | 當 SELECT 查詢包含一個子查詢時 | ||||||||||||||||||||||
• | 當 SELECT 語句包含 GROUP BY、HAVING 或 COMPUTE BY 時 | ||||||||||||||||||||||
• | 用 WHERE 子句中的 OR 加入的表示式。 | ||||||||||||||||||||||
• | expr <> non-null-constant 形式的比較謂詞。 | ||||||||||||||||||||||
• | 全文謂詞。 | ||||||||||||||||||||||
• | 當 INSERT、UPDATE 或 DELETE 中的目標表是一個表值函式時。 | ||||||||||||||||||||||
• | 通過 EXEC 字串提交的語句。 | ||||||||||||||||||||||
• | 通過 sp_executesql、sp_prepare 和 sp_prepexec 提交的語句,不帶有在 TF 447 下自動引數化的引數。 | ||||||||||||||||||||||
• | 當要求查詢通知時。 | ||||||||||||||||||||||
• | 當查詢包含通用表表示式列表時。 | ||||||||||||||||||||||
• | 當查詢包含 FOR UPDATE 子句時。 | ||||||||||||||||||||||
• | 當 UPDATE 包含 ORDER BY 子句時。 | ||||||||||||||||||||||
• | 當查詢包含 GROUPING 子句時。 | ||||||||||||||||||||||
• | 形式如下的 INSERT 語句:INSERT INTO T DEFAULT VALUES。 | ||||||||||||||||||||||
• | INSERT ...EXEC 語句。 | ||||||||||||||||||||||
• | 當查詢包含兩個常量的對比時。例如: WHERE 20 > 5 | ||||||||||||||||||||||
• | 通過自動引數化,可建立超過 1000 個引數。 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-242524/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- #ifndef預編譯編譯
- js預編譯 --預編譯詳解四部曲JS編譯
- CSS預編譯器CSS編譯
- GCC編譯過程(預處理->編譯->彙編->連結)GC編譯
- 對預編譯的理解編譯
- stylus(css預編譯器)CSS編譯
- JDBC預編譯語句JDBC編譯
- 關於預編譯頭 (轉)編譯
- JavaScript的預編譯過程分析JavaScript編譯
- dll預編譯提高webpack打包速度編譯Web
- 預編譯過程(AO+GO)編譯Go
- JavaScript預編譯原理, 引擎,作用域JavaScript編譯原理
- css預編譯--sass基礎篇CSS編譯
- gcc 從語言編譯全過程 預處理---->編譯---->彙編----->連結GC編譯
- EF Core預編譯模型Compiled Model編譯模型Compile
- C++ 預編譯標頭檔案C++編譯
- 編譯linux kernel預裝工具list編譯Linux
- 你真的理解javascript中的預編譯麼?JavaScript編譯
- javascript變數的宣告預編譯期間JavaScript變數編譯
- Xcode-新增pch預編譯檔案XCode編譯
- doxygen 宏定義/宏編譯/條件編譯/預處理/預編譯 不處理、忽略條件、分析所有條件、滿足所有條件的方法編譯
- c++進階(一)C語言條件編譯及編譯預處理階段C++C語言編譯
- Vue 之青銅 I 晉級 [預先編譯]Vue編譯
- MySQL中普通sql與預編譯sql 區別MySql編譯
- JS----預編譯及變數提升詳解JS編譯變數
- [C++]函式與編譯預處理(一)C++函式編譯
- [C++]函式與編譯預處理(二)C++函式編譯
- CSS預編譯語言Less的用法總結CSS編譯
- 關於JSP預編譯的中文問題JS編譯
- CMakeLists.txt --- 匯入介面庫(預編譯庫)編譯
- Java編譯與反編譯Java編譯
- 【MySQL安裝】Linux下安裝MySQL(預編譯)MySqlLinux編譯
- 如何預編譯 Android 模擬器專用核心編譯Android
- 編譯編譯
- CSS預編譯與PostCSS以及Webpack構建CSS綜合方案CSS編譯Web
- C/C++預處理、編譯、連結過程【Z】C++編譯
- MSBuild + MSILInect實現編譯時AOP之預覽UI編譯
- GCC/G++學習筆記 - 1 - 執行預編譯GC筆記編譯