關(guān)系代數與SQL查詢(xún)優(yōu)化的研究
1 引言
隨著(zhù)各個(gè)應用領(lǐng)域信息化程度日益提高,數據庫中的數據量迅猛增長(cháng),導致數據庫系統的查詢(xún)性能下降。但是一個(gè)數據庫應用系統的查詢(xún)性能直接影響到系統的推廣和應用,因此數據庫系統性能和查詢(xún)優(yōu)化成為數據庫應用領(lǐng)域備受關(guān)注的熱點(diǎn)問(wèn)題。
影響數據庫系統性能的因素很多,包括數據庫連接方式、應用系統架構、數據庫設計、管理等。其中最本質(zhì)又至關(guān)重要的是數據庫管理系統本身的查詢(xún)優(yōu)化技術(shù)。在數據庫系統開(kāi)發(fā)中,用戶(hù)業(yè)務(wù)邏輯必須轉換成數據庫查詢(xún)語(yǔ)言執行,或將數據庫查詢(xún)語(yǔ)言嵌入在宿主語(yǔ)言程序中執行。通過(guò)分析關(guān)系代數表達式的等價(jià)變換準則及查詢(xún)代價(jià),于給定的SQL查詢(xún)與關(guān)系代數表達式對應關(guān)系,研究并分析基于關(guān)系代數等價(jià)變換規則的SQL查詢(xún)優(yōu)化。
2 關(guān)系代數表達式的等價(jià)變換規則
數據庫查詢(xún)是指從數據庫中提取數據的一系列活動(dòng),包括:將高級數據庫語(yǔ)言表示的查詢(xún)語(yǔ)句翻譯為能在文件系統這一物理層次上實(shí)現的表達式,為優(yōu)化查詢(xún)進(jìn)行各種轉換,生成可供執行的查詢(xún)計劃。對于數據庫的查詢(xún)要求可通過(guò)關(guān)系代數的運算(操作)表達,而在SQL語(yǔ)言中通過(guò)SELECT語(yǔ)句實(shí)現查詢(xún)要求。南于關(guān)系代數運算與SELECT語(yǔ)句描述之間存在著(zhù)對應關(guān)系,兇此可將數據庫查詢(xún)轉換成關(guān)系代數運算,并利用關(guān)系代數等價(jià)變換規則生成優(yōu)化SOL的查詢(xún)計劃。
2.1 關(guān)系代數等價(jià)變換規則
設E、E1、E2和E3是關(guān)系代數表達式,A1,…,An和B1,…,Bm是屬性名,且A1,…,An是B1,…,Bm的子集,F、F1、F2和F3是條件表達式。則有常用的等價(jià)變換規則如表1所示。
2.2 查詢(xún)代價(jià)分析
從優(yōu)化的角度考慮,規則1與規則2等價(jià)變換前后的中間結果規模幾乎不發(fā)生變化,因此無(wú)需考慮優(yōu)化問(wèn)題。但規則3~規則10變換前后中間結果規模會(huì )發(fā)生變化,例如規則3若選取的條件F只與E1有關(guān),那么先進(jìn)行E1的條件選取,再與E2笛卡爾積的時(shí)間代價(jià)將大大減少,下面通過(guò)例子進(jìn)行查詢(xún)代價(jià)分析。
評論