MSSQL2008R2綠色獨(dú)立運(yùn)行版是一款非常不錯(cuò)的數(shù)據(jù)庫(kù)管理軟件,該軟件為廣大用戶(hù)提供了非常完整的企業(yè)級(jí)技術(shù)與工具,MSSQL2008R2綠色獨(dú)立運(yùn)行版可以為任何規(guī)模的應(yīng)用提供完備的信息平臺(tái),支持大規(guī)模的數(shù)據(jù)中心與數(shù)據(jù)倉(cāng)庫(kù)。
功能介紹
1、新的FORCESCAN查詢(xún)提示
任何DBA在進(jìn)行查詢(xún)優(yōu)化的時(shí)候,都知道scan和seek之間的區(qū)別。Scan是指讀取表中每一行數(shù)據(jù)然后返回查詢(xún);而seek使用表的葉數(shù)據(jù)來(lái)找到能夠回答相同查詢(xún)的行。當(dāng)查詢(xún)結(jié)果僅涉及到表數(shù)據(jù)的10-15%時(shí),通常使用seek方式會(huì)比較好,當(dāng)涉及到大量數(shù)據(jù)時(shí)則使用scan,它會(huì)讀取整個(gè)表然后送到內(nèi)存中然后返回結(jié)果,無(wú)需分析索引。
1.新的FORCESCAN提示功能就和字面上的意思一樣,可以確保查詢(xún)優(yōu)化器在給定的操作中不使用seek,而強(qiáng)制使用scan。需要提醒的是,F(xiàn)ORCESCAN需要謹(jǐn)慎使用,否則會(huì)造成查詢(xún)性能降低的后果:
2.SELECT user_type FROM user_table WITH (FORCESCAN)
上面的語(yǔ)句假定user_type列相對(duì)來(lái)說(shuō)并不是獨(dú)一無(wú)二的,也就是所謂的“低基數(shù)”列,這時(shí)候使用FORCESCAN就和使用索引沒(méi)有太大差別。
3.隨著SQL Server查詢(xún)優(yōu)化器變得越來(lái)越強(qiáng)大,我在自己的程序中已經(jīng)很少會(huì)用到這種提示功能,但是FORCESCAN還是有它的用武之處。強(qiáng)制表掃描是對(duì)系統(tǒng)進(jìn)行拷問(wèn)測(cè)試的一種方法,F(xiàn)ORCESCAN在這方面將會(huì)發(fā)揮積極的作用。
其他內(nèi)容
1.FORCESEEK和FORCESCAN二者是截然相反的,它會(huì)強(qiáng)制數(shù)據(jù)庫(kù)使用seek。在之前的版本中也存在這一功能,但是在SQL Server 2008 R2 SP1中,DBA可以使用FORCESEEK來(lái)指定需要seek的索引或者列:
2.SELECT user_name FROM user_table
3.WITH (FORCESEEK(user_table_index(user_name))
4.如果你能夠想到的,在user_table上有一個(gè)索引叫做user_table_index,它將user_name作為其中的一列。這會(huì)強(qiáng)制查詢(xún)優(yōu)化器使用這個(gè)索引和列來(lái)進(jìn)行seek。你還可以seek多個(gè)列,但是這需要按照它們?cè)谒饕械奈恢庙樞騺?lái)指明出來(lái)。
5.一個(gè)可能的應(yīng)用場(chǎng)景:你創(chuàng)建了一個(gè)系統(tǒng),其中生成索引后你想要手動(dòng)進(jìn)行詳細(xì)的說(shuō)明,或者是用存儲(chǔ)過(guò)程以及內(nèi)嵌SQL語(yǔ)句來(lái)自動(dòng)生成。