SQL Server 2008將計劃指南與查詢匹配
SQL Server 將 OBJECT 型別的計劃嚮導與在 sp_create_plan_guide 儲存過程的 @module_or_batch 引數中命名的儲存過程、觸發器、或函式(模組)內出現的查詢匹配。如果計劃嚮導位於模組中,則該計劃嚮導將與指定的查詢匹配。
對於在批處理內提交的查詢,SQL Server 通過首先嚐試將查詢與基於 SQL 的計劃嚮導匹配,再嘗試引數化查詢,然後再次嘗試匹配其他查詢,直到將計劃嚮導與這些查詢匹配為止。下圖簡要介紹了這一過程。
SQL Server 查詢優化器將執行的批處理識別為編譯批處理內的每條語句的請求。
對於批處理內的特定語句,SQL Server 嘗試將該語句與基於 SQL 的計劃指南匹配,該指南的 @module_or_batch 引數與傳入批處理文字的引數匹配(包含所有常量文字值);該指南的 @stmt 引數也與批處理中的語句匹配。如果存在此類計劃指南並且匹配成功,則會修改語句文字,以包括計劃指南中指定的查詢提示。隨後將相應地編譯語句。
如果計劃嚮導與步驟 2 中的語句不匹配,則 SQL Server 將嘗試使用強制引數化來引數化該語句。在此步驟中,引數化可能由於下列任何一個原因而失敗:
該語句已經被引數化,或者包含本地變數。
應用了 PARAMETERIZATION SIMPLE 資料庫 SET 選項(預設設定),但沒有將任何 TEMPLATE 型別的計劃嚮導應用於該語句,並且沒有任何 TEMPLATE 型別的計劃嚮導指定 PARAMETERIZATION FORCED 查詢提示。
已經有 TEMPLATE 型別的計劃嚮導應用於該語句,並且指定 PARAMETERIZATION SIMPLE 查詢提示。
如果強制引數化成功,則 SQL Server 嘗試將引數化格式的該語句與對該引數化語句建立的 SQL 型別的計劃嚮導匹配。如果存在此類計劃指南並且匹配成功,則會修改語句文字,以包括計劃指南中指定的查詢提示。隨後將相應地編譯語句。如果未與此類計劃嚮導匹配,將編譯該引數化語句,而無需事先由計劃嚮導修改該語句。
如果步驟 3 中的引數化失敗,SQL Server 將再次嘗試引數化該語句。這一次,SQL Server 將應用預設的簡單引數化行為。然後,直接編譯結果查詢。計劃嚮導與簡單引數化的結果不匹配。
注意:
在應用於通過強制引數化或簡單引數化進行引數化的查詢的 SQL 型別的計劃嚮導中,將忽略 RECOMPILE 查詢提示。還會發出一條警告。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-503352/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- SQL SERVER 2008安全配置SQLServer
- sql-server高階查詢SQLServer
- Sql Server 的引數化查詢SQLServer
- SQL Server 跨資料庫查詢SQLServer資料庫
- sql-server不相關子查詢SQLServer
- sql-server相關子查詢SQLServer
- SQL Server 查詢超時問題排查SQLServer
- SQL Server 語句日期格式查詢方法SQLServer
- SQL Server-簡單查詢語句SQLServer
- SQL Server查詢慢的解決方案SQLServer
- SQL Server 查詢歷史執行的SQL語句SQLServer
- SQL server資料庫with as子句與遞迴查詢的實現SQLServer資料庫遞迴
- [翻譯]SQL Server 2005 Analysis Services效能指南 Part 1 - 理解查詢構架SQLServer
- SQL SERVER死鎖查詢,死鎖分析,解鎖,查詢佔用SQLServer
- 在MySQL中使用explain查詢SQL的執行計劃MySqlAI
- Q&A:SQL Server 2008的升級與部署知識SOSQLServer
- 1.4 SQL Server2008安裝與配置(2020-12-1)SQLServer
- SQL Server 查詢表註釋和欄位SQLServer
- SQL Server2008程式堵塞處理方法SQLServer
- Sql Server2008R2下載地址SQLServer
- SQL Server 2008連線字串寫法大全SQLServer字串
- Sql介紹 與 Sql基礎查詢SQL
- 注意:微軟將在2019年7月停止對SQL Server 2008的支援!微軟SQLServer
- 查詢SQL Server的歷史執行記錄SQLServer
- 使用SSMS連線和查詢 SQL Server 例項SSMSQLServer
- SQL server根據表名查詢表主鍵SQLServer
- DbForge Studio for SQL Server入門教程:在查詢生成器中建立查詢SQLServer
- explain 查詢執行計劃AI
- Analysis Services基礎知識——深入SQL Server 2008SQLServer
- SQL Server 2008中的行壓縮(上)JUSQLServer
- SQL Server中Table字典資料的查詢SQL示例程式碼SQLServer
- SQL Server資料庫————模糊查詢和聚合函式SQLServer資料庫函式
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- 概括SQL Server實時查詢Oracle資料庫WSSQLServerOracle資料庫
- SQL Server解惑——查詢條件IN中能否使用變數SQLServer變數
- SQL2008查詢某資料庫中的某個值是否存在SQL資料庫
- win10怎麼安裝sql server2008 r2_win10如何安裝sql server2008 r2Win10SQLServer
- Excel 2010 SQL應用032 字元範圍的模糊匹配查詢ExcelSQL字元