<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 關(guān)系代數(shù)與SQL查詢優(yōu)化的研究

          關(guān)系代數(shù)與SQL查詢優(yōu)化的研究

          作者: 時間:2009-09-25 來源:網(wǎng)絡(luò) 收藏

          策略2:對同一關(guān)系連續(xù)的多個投影可轉(zhuǎn)換為僅含最后一個投影的操作。例如:Select A1,…AnFrom E(Select B1,…,Bm From E)XXXXXXXXXXXXXXXXXXXXXSelectA1,…,AnFrom E。因為A1,…,An∈B1,…,Bm,所以根據(jù)表1規(guī)則9等價于直接對子集A1,…,An投影。
          策略3:投影后的選擇操作可轉(zhuǎn)換為選擇操作后的投影操作,例如:Select A1,A2 From E1 Where A1=(Select B1 From E2Where B2>F2)等價于A1,A2 From E1E2Where A1=B1 And B2>F2。
          經(jīng)等價變換使得條件A1=B1 And B2>F2滿足時再進行投影,這樣可減少中間結(jié)果的規(guī)模。
          策略4:投影操作在并操作、交操作和連接操作上滿足分配律。例如:σF(E1∪E2)=σF(E1)∪σF(E2)等價于Select A1,A2From E1 Where F union Select B1,B2 From E2 Where F。對于E1,E2若在不同的服務(wù)器上,先進行本地服務(wù)器上的選擇再進行并行運算將減少代價。
          策略5:并操作和交操作滿足吸收律,即:E1∪(E1∩E2)=E1或E1 ∩(E1 UE2)=E1。例如:Select*From E1 union(Select*E1 From insersect Select* From E2)等價于Select *From E1。等價變換前對E1掃描2次,E2掃描1次,但等價變換后僅對E1掃描1次。
          3.2 成本最小的計劃
          數(shù)據(jù)庫優(yōu)化器是關(guān)系數(shù)據(jù)庫服務(wù)器的一個組成部分。基于成本的數(shù)據(jù)庫查詢優(yōu)化器的任務(wù)是通過產(chǎn)生可供選擇的查詢計劃,找到最低估算成本的查詢計劃來優(yōu)化一條語句,其過程如圖1所示。查詢計劃對語句性能十分重要。當(dāng)一條 語句被送人RDBMS服務(wù)器,將被解析并提交給數(shù)據(jù)庫查詢優(yōu)化器。查詢優(yōu)化器進行查詢等價變換,并對查詢表達式進行評估,以產(chǎn)生若干可供選擇的查詢計劃。估計每個待選的查詢計劃的成本,選用成本最小的查詢計劃,最終生成可執(zhí)行的SQL語句。

          本文引用地址:http://www.ex-cimer.com/article/202639.htm

          4 結(jié)束語
          數(shù)據(jù)庫查詢優(yōu)化器生成查詢計劃存在2個問題:第一,無法產(chǎn)生全部可能的、并可供選擇的查詢計劃;第二,無法準(zhǔn)確地估計查詢成本。另外,查詢處理的代價通常取決于磁盤的訪問,因為磁盤的訪問比內(nèi)存訪問速度慢得多,就所需的磁盤訪問次數(shù)而言,策略好壞差別很大,甚至相差幾個數(shù)量級。所以,對于一個給定的查詢,查詢優(yōu)化器系統(tǒng)如何快速選擇一個生成成本相對較小的查詢計劃很值得研究。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: SQL 查詢

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();