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