資源描述:
《第8章關(guān)系查詢處理及其查詢優(yōu)化.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第八章關(guān)系查詢處理及其查詢優(yōu)化數(shù)據(jù)庫(kù)系統(tǒng)概論AnIntroductiontoDatabaseSystemAnIntroductiontoDatabaseSystem第八章關(guān)系查詢處理及其查詢優(yōu)化8.1關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的查詢處理8.2關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的查詢優(yōu)化8.3代數(shù)優(yōu)化8.4物理優(yōu)化8.3小結(jié)AnIntroductiontoDatabaseSystem8.1.1查詢處理步驟查詢分析查詢檢查檢查通過(guò)后把SQL語(yǔ)句轉(zhuǎn)換成等價(jià)的關(guān)系代數(shù)表達(dá)式;一般用查詢樹(shù)(語(yǔ)法分析樹(shù))來(lái)表示擴(kuò)展的關(guān)系代數(shù)表達(dá)式;把數(shù)據(jù)庫(kù)
2、對(duì)象的外部名稱轉(zhuǎn)換為內(nèi)部表示。查詢優(yōu)化查詢執(zhí)行AnIntroductiontoDatabaseSystem8.1.2實(shí)現(xiàn)查詢操作的算法示例一、選擇操作的實(shí)現(xiàn)1.簡(jiǎn)單的全表掃描方法對(duì)小表而言簡(jiǎn)單有效。2.索引(或散列)掃描方法通過(guò)索引先找到滿足條件的元組主碼或元組指針,再通過(guò)元組指針直接在查詢的基本表中找到元組。AnIntroductiontoDatabaseSystem8.1.2實(shí)現(xiàn)查詢操作的算法示例(續(xù))二、連接操作的實(shí)現(xiàn)1.嵌套循環(huán)法(NESTED-LOOP)首先在表1中找到第一個(gè)元組,然后
3、從頭開(kāi)始掃描表2,逐一查找滿足連接件的元組,找到后就將表1中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組;表2全部查找完后,再找表1中第二個(gè)元組,然后再?gòu)念^開(kāi)始掃描表2,逐一查找滿足連接條件的元組,找到后就將表1中的第二個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組;重復(fù)上述操作,直到表1中的全部元組都處理完畢。AnIntroductiontoDatabaseSystem8.1.2實(shí)現(xiàn)查詢操作的算法示例(續(xù))2.排序合并法(SORT-MERGE)首先按連接屬性對(duì)表1和表2排序;對(duì)表1的第一個(gè)元
4、組,從頭開(kāi)始掃描表2,順序查找滿足連接條件的元組,找到后就將表1中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組。當(dāng)遇到表2中第一條“大于”表1連接字段值的元組時(shí),對(duì)表2的查詢不再繼續(xù);AnIntroductiontoDatabaseSystem排序合并法(SORT-MERGE)找到表1的第二條元組,然后從剛才的中斷點(diǎn)處繼續(xù)順序掃描表2,查找滿足連接條件的元組,找到后就將表1中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組。直接遇到表2中“大于”表1連接字段值的元組時(shí),對(duì)表2的查詢不再繼續(xù)
5、;重復(fù)上述操作,直到表1或表2中的全部元組都處理完畢為止。注:常用于等值連接。AnIntroductiontoDatabaseSystem8.1.2實(shí)現(xiàn)查詢操作的算法示例(續(xù))3.索引連接(INDEX-JOIN)對(duì)表2按連接字段建立索引;對(duì)表1中的每個(gè)元組,依次根據(jù)其連接字段值查詢表2的索引,從中找到滿足條件的元組,找到后就將表1中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組;重復(fù)上述操作,直到表1中的全部元組都處理完畢為止。AnIntroductiontoDatabaseSystem8.1
6、.2實(shí)現(xiàn)查詢操作的算法示例(續(xù))3.Hash-Join方法劃分階段,對(duì)包含較少元組的表(比如表2)進(jìn)行一遍處理,把它的元組按hash函數(shù)分散列到hash表的桶中;試探階段(也稱為連接階段),將另一個(gè)表(表1)的元組散列到hash桶中,并把元組與桶中來(lái)自表2與之相匹配的元組連接起來(lái)。注:上面算法假定較小的表在第一階段后可以完全放入內(nèi)存的hash桶中。AnIntroductiontoDatabaseSystem8.2關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的查詢優(yōu)化8.2.1查詢優(yōu)化概述8.2.2查詢優(yōu)化的必要性AnIntro
7、ductiontoDatabaseSystem8.2.1查詢優(yōu)化概述查詢優(yōu)化的必要性查詢優(yōu)化極大地影響RDBMS的性能。查詢優(yōu)化的可能性關(guān)系數(shù)據(jù)語(yǔ)言的級(jí)別很高,使DBMS可以從關(guān)系表達(dá)式中分析查詢語(yǔ)義。AnIntroductiontoDatabaseSystem由DBMS進(jìn)行查詢優(yōu)化的好處用戶不必考慮如何最好地表達(dá)查詢以獲得較好的效率。系統(tǒng)可以比用戶程序的優(yōu)化做得更好(1)優(yōu)化器可以從數(shù)據(jù)字典中獲取許多統(tǒng)計(jì)信息,而用戶程序則難以獲得這些信息;AnIntroductiontoDatabaseSyst
8、em由DBMS進(jìn)行查詢優(yōu)化的好處(2)如果數(shù)據(jù)庫(kù)的物理統(tǒng)計(jì)信息改變了,系統(tǒng)可以自動(dòng)對(duì)查詢重新優(yōu)化以選擇相適應(yīng)的執(zhí)行計(jì)劃。在非關(guān)系系統(tǒng)中必須重寫(xiě)程序,而重寫(xiě)程序在實(shí)際應(yīng)用中往往是不太可能的。(3)優(yōu)化器可以考慮數(shù)百種不同的執(zhí)行計(jì)劃,而程序員一般只能考慮有限的幾種可能性。(4)優(yōu)化器中包括了很多復(fù)雜的優(yōu)化技術(shù)。AnIntroductiontoDatabaseSystem查詢優(yōu)化目標(biāo)查詢優(yōu)化的總目標(biāo)選擇有效策略,求得給定關(guān)系表達(dá)式的值實(shí)際系統(tǒng)的查詢優(yōu)化步驟1.將查詢轉(zhuǎn)換成某種內(nèi)部表示,通