關(guān)系代數(shù)與SQL查詢優(yōu)化的研究
策略2:對(duì)同一關(guān)系連續(xù)的多個(gè)投影可轉(zhuǎn)換為僅含最后一個(gè)投影的操作。例如:Select A1,…AnFrom E(Select B1,…,Bm From E)XXXXXXXXXXXXXXXXXXXXXSelectA1,…,AnFrom E。因?yàn)锳1,…,An∈B1,…,Bm,所以根據(jù)表1規(guī)則9等價(jià)于直接對(duì)子集A1,…,An投影。
策略3:投影后的選擇操作可轉(zhuǎn)換為選擇操作后的投影操作,例如:Select A1,A2 From E1 Where A1=(Select B1 From E2Where B2>F2)等價(jià)于A1,A2 From E1E2Where A1=B1 And B2>F2。
經(jīng)等價(jià)變換使得條件A1=B1 And B2>F2滿足時(shí)再進(jìn)行投影,這樣可減少中間結(jié)果的規(guī)模。
策略4:投影操作在并操作、交操作和連接操作上滿足分配律。例如:σF(E1∪E2)=σF(E1)∪σF(E2)等價(jià)于Select A1,A2From E1 Where F union Select B1,B2 From E2 Where F。對(duì)于E1,E2若在不同的服務(wù)器上,先進(jìn)行本地服務(wù)器上的選擇再進(jìn)行并行運(yùn)算將減少查詢代價(jià)。
策略5:并操作和交操作滿足吸收律,即:E1∪(E1∩E2)=E1或E1 ∩(E1 UE2)=E1。例如:Select*From E1 union(Select*E1 From insersect Select* From E2)等價(jià)于Select *From E1。等價(jià)變換前對(duì)E1掃描2次,E2掃描1次,但等價(jià)變換后僅對(duì)E1掃描1次。
3.2 成本最小的查詢計(jì)劃
數(shù)據(jù)庫(kù)查詢優(yōu)化器是關(guān)系數(shù)據(jù)庫(kù)服務(wù)器的一個(gè)組成部分。基于成本的數(shù)據(jù)庫(kù)查詢優(yōu)化器的任務(wù)是通過(guò)產(chǎn)生可供選擇的查詢計(jì)劃,找到最低估算成本的查詢計(jì)劃來(lái)優(yōu)化一條SQL語(yǔ)句,其過(guò)程如圖1所示。查詢計(jì)劃對(duì)SQL語(yǔ)句性能十分重要。當(dāng)一條SQL 語(yǔ)句被送人RDBMS服務(wù)器,將被解析并提交給數(shù)據(jù)庫(kù)查詢優(yōu)化器。查詢優(yōu)化器進(jìn)行查詢等價(jià)變換,并對(duì)查詢表達(dá)式進(jìn)行評(píng)估,以產(chǎn)生若干可供選擇的查詢計(jì)劃。估計(jì)每個(gè)待選的查詢計(jì)劃的成本,選用成本最小的查詢計(jì)劃,最終生成可執(zhí)行的SQL語(yǔ)句。本文引用地址:http://www.ex-cimer.com/article/202639.htm
4 結(jié)束語(yǔ)
數(shù)據(jù)庫(kù)查詢優(yōu)化器生成查詢計(jì)劃存在2個(gè)問(wèn)題:第一,無(wú)法產(chǎn)生全部可能的、并可供選擇的查詢計(jì)劃;第二,無(wú)法準(zhǔn)確地估計(jì)查詢成本。另外,查詢處理的代價(jià)通常取決于磁盤(pán)的訪問(wèn),因?yàn)榇疟P(pán)的訪問(wèn)比內(nèi)存訪問(wèn)速度慢得多,就所需的磁盤(pán)訪問(wèn)次數(shù)而言,策略好壞差別很大,甚至相差幾個(gè)數(shù)量級(jí)。所以,對(duì)于一個(gè)給定的查詢,查詢優(yōu)化器系統(tǒng)如何快速選擇一個(gè)生成成本相對(duì)較小的查詢計(jì)劃很值得研究。
評(píng)論