使用被自動緩存的查詢計劃提高SQL Server查詢性能
如果想提高SQL Server查詢性能,可以有多種的方法,下面為您介紹的是使用被自動緩存的查詢計劃提高SQL Server查詢性能的方法,供您參考。
在SQL Server數(shù)據(jù)庫系統(tǒng)中,查詢是用SELECT語句來表示,從查詢語句執(zhí)行計劃提交到輸出查詢數(shù)據(jù)結(jié)果集。要經(jīng)過以下過程:解釋、解析、優(yōu)化、編譯和執(zhí)行。為了提高性能.SQL Server能夠保存編譯過的查詢計劃供以后使用。查詢計劃是經(jīng)過優(yōu)化的指令.它指定了如何處理查詢并訪問數(shù)據(jù)。查詢計劃保存在過程緩存中,這是一個臨時存儲空間,它保存當(dāng)前正在執(zhí)行的一個特定查詢的查詢計劃,稱為自動緩存查詢。利用自動緩存,能夠提高查詢效率,因為,在執(zhí)行下面與自動查詢緩存計劃相同的查詢語句時.就可以使用該緩存中所保存的查詢計劃,避免了對查詢語句重新解釋、解析、優(yōu)化、編譯過程,從而提高SQL Server查詢性能。SQL Server數(shù)據(jù)庫在執(zhí)行查詢時.使用被自動緩存的查詢計劃有兩種情況:
(1)特殊的批
SQL Server降為特殊的批保存查詢計劃。如果接下的批和上一個批類似,SQLServer將使用緩存的查詢計劃??梢允褂镁彺娴牟樵冇媱澋那疤崾莾蓚€查詢的腳本文本必須匹配。
例如:學(xué)生(學(xué)號,姓名,性別,年齡,入學(xué)日期,政治面貌,班級編號.系別)
Select from 學(xué)生where入學(xué)日期=”2O05—09一l3”
Go
Select from 學(xué)生where入學(xué)日期=”20o5—O9一l3”
Go
查詢語句l和查詢語句2具有相同的語法結(jié)構(gòu).執(zhí)行時語句2可以直接使用語句l所緩存的查詢計劃.省去了對語句2的解釋、解析、優(yōu)化、編譯過程,從而提高了查詢效率。因此,在編程的時候盡可能的使用與前面執(zhí)行過的查詢語句具有相同的腳本,使數(shù)據(jù)和數(shù)據(jù)類型精確匹配。提高SQL Server查詢性能。
(2)自動參數(shù)化
SQL Server試圖探測實際上是參數(shù)的常量.并自動將其轉(zhuǎn)化成與字段的數(shù)據(jù)類型對應(yīng)的參數(shù)。如果轉(zhuǎn)換成功,則以后類似的查詢就可以使用同一個查詢計劃。例如:
select from 學(xué)生where學(xué)號=1234
select}from 學(xué)生where 學(xué)號=5678
語句l將其參數(shù)常量l234轉(zhuǎn)化為字段”學(xué)號”的數(shù)據(jù)類型.并將其查詢計劃緩存。語句2將使用與語句l同一樣的查詢計劃,省去了對語句2的解釋、解析、優(yōu)化、編譯過程。從而提高了查誨效率。因此。在編制查詢語句時盡可能的使用和前面具有相同的查詢語句和參數(shù)常量.以便使后面的查詢語句使用前面已經(jīng)自動緩存的查詢計劃。提高應(yīng)用程序的效率。
【編輯推薦】