SQL Server參數(shù)化查詢的概念與創(chuàng)建
此文主要向大家描述的是SQL Server參數(shù)化查詢的概念,以及自動(dòng)創(chuàng)建SQL Server數(shù)據(jù)庫(kù)參數(shù)化查詢的實(shí)際操作步驟,以下的文章主要是對(duì)這兩個(gè)相關(guān)內(nèi)容的介紹,希望會(huì)給你帶來(lái)一些幫助在此方面。
什么是SQL Server參數(shù)化查詢?
一個(gè)簡(jiǎn)單理解參數(shù)化查詢的方式是把它看做只是一個(gè)T-SQL查詢,它接受控制這個(gè)查詢返回什么的參數(shù)。通過(guò)使用不同的參數(shù),一個(gè)參數(shù)化查詢返回不同的結(jié)果。要獲得一個(gè)參數(shù)化查詢,你需要以一種特定的方式來(lái)編寫(xiě)你的代碼,或它需要滿足一組特定的標(biāo)準(zhǔn)。
有兩種不同的方式來(lái)創(chuàng)建參數(shù)化查詢。***個(gè)方式是讓查詢優(yōu)化器自動(dòng)地參數(shù)化你的查詢。另一個(gè)方式是通過(guò)以一個(gè)特定方式來(lái)編寫(xiě)你的T-SQL代碼,并將它傳遞給sp_executesql系統(tǒng)存儲(chǔ)過(guò)程,從而編程一個(gè)參數(shù)化查詢。這篇文章的后面部分將介紹這個(gè)方法。
參數(shù)化查詢的關(guān)鍵是查詢優(yōu)化器將創(chuàng)建一個(gè)可以重用的緩存計(jì)劃。通過(guò)自動(dòng)地或編程使用參數(shù)化查詢,SQL Server可以優(yōu)化類似T-SQL語(yǔ)句的處理。這個(gè)優(yōu)化消除了對(duì)使用高貴資源為這些類似T-SQL語(yǔ)句的每一次執(zhí)行創(chuàng)建一個(gè)緩存計(jì)劃的需求。而且通過(guò)創(chuàng)建一個(gè)可重用計(jì)劃,SQL Server還減少了存放過(guò)程緩存中類似的執(zhí)行計(jì)劃所需的內(nèi)存使用。
現(xiàn)在讓我們看看使得SQL Server創(chuàng)建參數(shù)化查詢的不同方式。
SQL Server參數(shù)化查詢是怎樣自動(dòng)創(chuàng)建的?
微軟編寫(xiě)查詢優(yōu)化器代碼的人竭盡全力地優(yōu)化SQL Server處理你的T-SQL命令的方式。我想這是查詢優(yōu)化器名稱的由來(lái)。這些盡量減少資源和***限度地提高查詢優(yōu)化器執(zhí)行性能的方法之一是查看一個(gè)T-SQL語(yǔ)句并確定它們是否可以被參數(shù)化。要了解這是如何工作的,讓我們看看下面的T-SQL語(yǔ)句:
- SELECT *
- FROM AdventureWorks.Sales.SalesOrderHeader
- WHERE SalesOrderID = 56000;
- GO
在這里,你可以看到這個(gè)命令有兩個(gè)特點(diǎn)。***它簡(jiǎn)單,第二它在WHERE謂詞中包含一個(gè)用于SalesOrderID值的指定值。查詢優(yōu)化器可以識(shí)別這個(gè)查詢比較簡(jiǎn)單以及SalesOrderID有一個(gè)參數(shù)(“56000”)。因此,查詢優(yōu)化器可以自動(dòng)地參數(shù)化這個(gè)查詢。
上述的相關(guān)內(nèi)容就是對(duì)SQL Server參數(shù)化查詢的概念與自動(dòng)創(chuàng)建的描述,希望會(huì)給你帶來(lái)一些幫助在此方面。
原文標(biāo)題:SQL Server參數(shù)化查詢
連接:http://www.cnblogs.com/ylqmf/archive/2010/05/25/1743766.html
【編輯推薦】