實(shí)驗(yàn)指導(dǎo)05(查詢優(yōu)化)

實(shí)驗(yàn)指導(dǎo)05(查詢優(yōu)化)

ID:46689911

大?。?0.50 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2019-11-26

實(shí)驗(yàn)指導(dǎo)05(查詢優(yōu)化)_第1頁(yè)
實(shí)驗(yàn)指導(dǎo)05(查詢優(yōu)化)_第2頁(yè)
實(shí)驗(yàn)指導(dǎo)05(查詢優(yōu)化)_第3頁(yè)
實(shí)驗(yàn)指導(dǎo)05(查詢優(yōu)化)_第4頁(yè)
實(shí)驗(yàn)指導(dǎo)05(查詢優(yōu)化)_第5頁(yè)
資源描述:

《實(shí)驗(yàn)指導(dǎo)05(查詢優(yōu)化)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、1實(shí)驗(yàn)五:查詢優(yōu)化1.1實(shí)驗(yàn)背景我們?cè)趯?xiě)SQL的吋候,不同的人針對(duì)同一個(gè)問(wèn)題會(huì)寫(xiě)出不同的SQL,而這些不同的SQL會(huì)有性能上的優(yōu)劣,主要表現(xiàn)就是有的SQL執(zhí)行時(shí)間短,冇的則執(zhí)行時(shí)間長(zhǎng)。那么怎樣的SQL是好的呢?我們教材的“關(guān)系系統(tǒng)及其查詢優(yōu)化”一章給出了答案,并口還從關(guān)系代數(shù)的角度闡述了為什么會(huì)存在SQL執(zhí)行性能上的差界。同時(shí)給出了查詢優(yōu)化的原則建議:?選擇運(yùn)算盡可能先做。?在執(zhí)行連接操作Z前對(duì)關(guān)系做適當(dāng)預(yù)處理。?投影和選擇操作同時(shí)執(zhí)行。?把投影同前后的雙目運(yùn)算結(jié)合起來(lái)做。?找出公共子表達(dá)式。但是,這個(gè)建議一般是給那些DBMS產(chǎn)品的生產(chǎn)廠商的,如MS、Ora

2、cle>IBM,作為他們?cè)谏a(chǎn)DBMS產(chǎn)需的時(shí)候,按照這些建議優(yōu)化他們的產(chǎn)品。也就是說(shuō),當(dāng)我們?cè)谑褂眠@些廠家生產(chǎn)的DBMS執(zhí)行SQL的時(shí)候,SQL會(huì)被DBMS自動(dòng)優(yōu)化。但是這并不意味著我們可以高枕無(wú)憂地肆意亂寫(xiě)SQL,只要能把結(jié)果得出來(lái)就行。我們還是要了解一些不同DBMS他們對(duì)SQL的優(yōu)化策略。這樣可以寫(xiě)出更高質(zhì)量的SQL。我們可以看下面這個(gè)例子:使用SQLServer2000,在ChooseCourse數(shù)據(jù)庫(kù)上求解“查詢選修了數(shù)據(jù)庫(kù)系統(tǒng)原理同學(xué)的姓名?!?。我們可以寫(xiě)出4條能得到同樣結(jié)果的SQLo第1條SQL:SELECTStudent.NameFROMSt

3、udent,ChooseCourse,CourseWHEREStudent.StudentID=ChooseCourse.StudentIDANDCourse.CourselD=ChooseCourse.CourselDANDCourse.NameLIKE'數(shù)據(jù)庫(kù)%,第2條SQL:SELECTStudent.NameFROMStudentJOINChooseCourseONStudent.StudentID=ChooseCourse.StudentIDJOINCourseONCourse.CourselD=ChooseCourse.CourselDWHERE

4、Course.NameLIKE'數(shù)據(jù)庫(kù)知第3條SQL:SELECTStuNameFROM(SELECTStudent.StudentID,Student.NameASStuName,ChooseCourse.CourselD,Course.NameASCouNameFROMStudentINNERJOINChooseCourseONStudent.StudentID=ChooseCourse.StudentIDINNERJOINCourseONCourse.CourselD=ChooseCourse.CourselD)ASSCWHERECouNameLIKE

5、,數(shù)據(jù)庫(kù)%:第4條SQL:SELECTNameFROMStudentINNERJOIN(SELECTChooseCourse.*FROMChooseCourse,CourseWHERECourse.NameLIKE'數(shù)據(jù)悍%ANDCourse.CourselD=ChooseCourse.CourselD)ASCCONStudent.StudentID=CC.StudentID這四條SQL在SQLServer2000下,總體實(shí)行效率是否一樣呢?如果這四條SQL執(zhí)行效率不同的話,那么在SQLServer中,什么是決定SQL執(zhí)行效率的因素呢?為此我們要解決這個(gè)問(wèn)題

6、,需要利用統(tǒng)計(jì)學(xué)知識(shí)來(lái)解釋。這里補(bǔ)充一些SQLServer中關(guān)于SQL查詢優(yōu)化的知識(shí)。首先,在SQLServer中,SQL的語(yǔ)句執(zhí)行過(guò)程如下圖:圖1SQLServer的查詢語(yǔ)句執(zhí)行流程我們從圖中了解到,SQL語(yǔ)旬是我們寫(xiě)的,但是怎么執(zhí)行是由SQLServer說(shuō)了算的。這里的“執(zhí)行計(jì)劃”是指SQLServer真正對(duì)你寫(xiě)的SQL將會(huì)按照什么步驟執(zhí)行的意思。再次,DBMS—般采用的查詢優(yōu)化策略有兩種:基于規(guī)則的/基于語(yǔ)法的(RBO)執(zhí)行計(jì)劃與優(yōu)化算法基于代價(jià)的/基于成本的(CBO)圖2DBMS-般采用的查詢優(yōu)化策略而SQLServer采取的優(yōu)化策略是RBO的。那么

7、什么是RBO呢?請(qǐng)査閱SQLServer200()的聯(lián)機(jī)從書(shū)中的“優(yōu)化數(shù)據(jù)庫(kù)性能/查詢優(yōu)化”章節(jié),可以獲得詳細(xì)的幫助。然后,我們了解在SQLServer2000中和查詢優(yōu)化有關(guān)的T-SQL有哪些。(SETSTATISTICSIOSETSTATISTICSTIMEExecsp_spaceusedTableSQLServer查詢有關(guān)的語(yǔ)句<_冃穴口SETSHOWPLAN_TEXTON—SETSHOWPLANALLONSETNOCOUNTONGetDate()/DateDi什圖3SQLServer2000中和查詢優(yōu)化有關(guān)的T-SQL最后,我們還得給出一些在SQ

8、LServer2000中寫(xiě)SQL的指導(dǎo)原則。查詢語(yǔ)句

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。