国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)庫查詢的優(yōu)化的制作方法

      文檔序號(hào):6489389閱讀:240來源:國知局
      數(shù)據(jù)庫查詢的優(yōu)化的制作方法
      【專利摘要】提供一種用于便利優(yōu)化數(shù)據(jù)庫查詢的技術(shù)。在一些實(shí)施方式中,接收第一查詢,通過在該查詢中檢測(cè)指定語法來自動(dòng)地識(shí)別用于優(yōu)化的至少一個(gè)場(chǎng)景,然后通過使用與該識(shí)別場(chǎng)景對(duì)應(yīng)的預(yù)定義的操作來重寫第一查詢以自動(dòng)地生成第二查詢。
      【專利說明】數(shù)據(jù)庫查詢的優(yōu)化
      【技術(shù)領(lǐng)域】
      [0001]本公開一般涉及數(shù)據(jù)庫,更具體地,涉及數(shù)據(jù)庫查詢優(yōu)化。
      【背景技術(shù)】
      [0002]數(shù)據(jù)庫通常包括用于存儲(chǔ)數(shù)據(jù)值的一個(gè)或多個(gè)數(shù)據(jù)庫表格。為了在數(shù)據(jù)庫中檢索和操縱數(shù)據(jù),用戶、應(yīng)用程序或遠(yuǎn)程系統(tǒng)通常向數(shù)據(jù)庫管理系統(tǒng)(DBMS)發(fā)出數(shù)據(jù)庫查詢。數(shù)據(jù)庫查詢是指用于檢索存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù)的語句、命令或子句的集合。例如,查詢可以在數(shù)據(jù)庫中指定檢索數(shù)據(jù)的特定位置(例如,表格、行或列),或者指定如何聯(lián)接來自多個(gè)表格的列。
      [0003]在運(yùn)行之前編譯查詢。在編譯期間,DBMS通常將該查詢解析成為指定如何實(shí)現(xiàn)查詢的關(guān)系運(yùn)算符。可以在“查詢計(jì)劃”或“訪問計(jì)劃”中對(duì)關(guān)系運(yùn)算符排序。因?yàn)橥ǔ4嬖诰哂行阅茏兓艽蟮?、大量可供選擇的方法來運(yùn)行給定查詢,所以DBMS的查詢優(yōu)化器可以估計(jì)一些不同的可能計(jì)劃并返回它認(rèn)為的最佳查詢計(jì)劃。
      [0004]因?yàn)椴樵儍?yōu)化器是非理想的,所以數(shù)據(jù)庫用戶和管理員有時(shí)需要人工地檢查并調(diào)節(jié)查詢計(jì)劃以實(shí)現(xiàn)更好的性能。通常提供工具的集合(例如IBM圖形化解釋(VisualExplain))來顯示查詢?cè)L問計(jì)劃。一些數(shù)據(jù)庫提供功能"EXPLAIN PLAN (解釋計(jì)劃)"以允許用戶預(yù)覽和估計(jì)由DBMS生成的查詢計(jì)劃。還可以提供返回用于運(yùn)行查詢的成本和時(shí)間的“計(jì)劃表”。
      [0005]然而,EXPLAIN PLAN功能在性能調(diào)節(jié)方面不是非常有用。例如,一些數(shù)據(jù)庫可以返回具有許多未知結(jié)果(例如,運(yùn)行時(shí)間)的計(jì)劃表,使得難以判斷哪個(gè)查詢語句產(chǎn)生最有效的查詢計(jì)劃。此外,不同的“聯(lián)接”序列會(huì)產(chǎn)生導(dǎo)致不同的運(yùn)行次數(shù)的不同的查詢計(jì)劃,該運(yùn)行時(shí)間經(jīng)常是未知的。
      [0006]此外,人工操縱性能調(diào)節(jié)會(huì)非常耗時(shí)和困難。復(fù)雜結(jié)構(gòu)化查詢語言(SQL)查詢會(huì)需要執(zhí)行不同的調(diào)節(jié)方法。在數(shù)據(jù)量改變的可能事件中,將必須重復(fù)全部冗長的調(diào)節(jié)處理以估計(jì)性能變化。此外,不同的數(shù)據(jù)庫具有不同的特性,并且程序員必須熟悉下層數(shù)據(jù)庫的特定特性以便執(zhí)行性能調(diào)節(jié)。
      [0007]因此,存在對(duì)解決上述挑戰(zhàn)的、改善的數(shù)據(jù)庫查詢優(yōu)化框架的需要。

      【發(fā)明內(nèi)容】

      [0008]此處描述一種用于便于優(yōu)化數(shù)據(jù)庫查詢的計(jì)算機(jī)實(shí)現(xiàn)技術(shù)。在一些實(shí)現(xiàn)中,接收第一查詢。通過在第一查詢中檢測(cè)指定語法來自動(dòng)地識(shí)別用于優(yōu)化的至少一個(gè)場(chǎng)景。然后通過使用與識(shí)別的場(chǎng)景對(duì)應(yīng)的預(yù)定義的操作重寫第一查詢來自動(dòng)地生成第二查詢。
      [0009]利用將在下文中變得清楚的這些和其它優(yōu)點(diǎn)與特征,通過參照以下詳細(xì)描述和權(quán)利要求與附圖,可以獲得進(jìn)一步信息。
      【專利附圖】

      【附圖說明】[0010]在附圖中示出一些實(shí)施例,在附圖中相同的參考標(biāo)號(hào)標(biāo)明相似的部分,其中:
      [0011]圖1是示出示范性系統(tǒng)的框圖;
      [0012]圖2是示出通過示范性數(shù)據(jù)庫管理系統(tǒng)的查詢流的框圖;
      [0013]圖3示出用于優(yōu)化數(shù)據(jù)庫查詢的示范性方法;
      [0014]圖4示出示范性預(yù)定義場(chǎng)景和子場(chǎng)景;以及
      [0015]圖5示出示范性用戶界面。
      【具體實(shí)施方式】
      [0016]在下面的描述中,為了說明的目的,闡述指定數(shù)目、材料和配置以便提供給出的框架和方法的徹底理解,以及以便滿足法定的書寫描述、實(shí)現(xiàn)和最佳的模式要求。然而,本領(lǐng)域技術(shù)人員清楚地是,可以在沒有指定示范性細(xì)節(jié)的情況下實(shí)現(xiàn)給出的框架和方法。在其他情況中,省略或簡化公知的特征以使給出的框架和方法的示范性實(shí)施方式的描述清楚,并且從而更好地解釋給出的框架和方法。此外,為便于理解,將某些方法步驟描繪為分開地步驟;然而,這些分開地描繪步驟不應(yīng)該被看作是依賴其性能的必須的次序。
      [0017]此處描述的框架可以實(shí)現(xiàn)為方法、計(jì)算機(jī)控制的裝置、計(jì)算機(jī)處理、計(jì)算系統(tǒng)、或諸如計(jì)算機(jī)可用介質(zhì)的制品。從以下描述,這些和各種其他特征將是清楚的。
      [0018]圖1示出的框圖示出了可以用來實(shí)現(xiàn)此處描述的框架的示范性系統(tǒng)100。系統(tǒng)100可以包括可通信地耦接到輸入設(shè)備102(例如,鍵盤、觸摸板、麥克風(fēng)、照相機(jī)等)和輸出設(shè)備104 (例如,顯示設(shè)備、監(jiān)視器、打印機(jī)、揚(yáng)聲器等)的計(jì)算機(jī)系統(tǒng)106。計(jì)算機(jī)系統(tǒng)106還可以包括用于使用通信鏈路130(例如,電話線、無線網(wǎng)絡(luò)鏈路、有線網(wǎng)絡(luò)鏈路或電纜網(wǎng))與網(wǎng)絡(luò)132交換數(shù)據(jù)的通信卡或設(shè)備116 (例如,調(diào)制解調(diào)器和/或網(wǎng)絡(luò)適配器)。網(wǎng)絡(luò)132可以是局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)。計(jì)算機(jī)系統(tǒng)106可以經(jīng)由網(wǎng)絡(luò)132可通信地耦接到一個(gè)或多個(gè)其他計(jì)算機(jī)系統(tǒng)154。例如,計(jì)算機(jī)系統(tǒng)106可以充當(dāng)服務(wù)器并且使用到一個(gè)或多個(gè)客戶端計(jì)算機(jī)150的邏輯聯(lián)接而在網(wǎng)絡(luò)環(huán)境中操作。
      [0019]計(jì)算機(jī)系統(tǒng)106包括中央處理單元(CPU) 114、輸入/輸出(I/O)單元110和存儲(chǔ)器模塊112。諸如高速緩存、電源、時(shí)鐘電路和通信總線之類的其他支持電路也可以包括在計(jì)算機(jī)系統(tǒng)106中。此外,可以通過專用集成電路補(bǔ)充上述中的任何一個(gè),或者可以通過專用集成電路合并上述中的任何一個(gè)。計(jì)算機(jī)系統(tǒng)106的示例包括能夠以定義的方式響應(yīng)于并運(yùn)行指令的手持設(shè)備、移動(dòng)設(shè)備、個(gè)人數(shù)字助理(PDA)、工作站、服務(wù)器、便攜式膝上型計(jì)算機(jī)、其它便攜式設(shè)備、通用微型計(jì)算機(jī)、大型計(jì)算機(jī)、存儲(chǔ)系統(tǒng)、專用數(shù)字設(shè)備、設(shè)備、組件、其他設(shè)備,或者這些的一些組合。
      [0020]存儲(chǔ)器模塊112可以是任何形式的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),包括但不限于,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、閃速存儲(chǔ)器件、磁盤、內(nèi)部硬盤、活動(dòng)磁盤、磁光磁盤、光盤只讀存儲(chǔ)器(CD-ROM)、任何其他易失性的或非易失性存儲(chǔ)器,或者其組合。
      [0021]存儲(chǔ)器模塊112用來存儲(chǔ)機(jī)器可執(zhí)行指令、數(shù)據(jù)和各種程序,諸如用于實(shí)現(xiàn)此處描述的技術(shù)的操作系統(tǒng)120、數(shù)據(jù)庫122和數(shù)據(jù)庫管理系統(tǒng)(DBMS) 123,上述的全部都可以由CPU114處理。因而,當(dāng)運(yùn)行機(jī)器可執(zhí)行指令時(shí)計(jì)算機(jī)系統(tǒng)106是成為特定目的計(jì)算機(jī)系統(tǒng)的通用計(jì)算機(jī)系統(tǒng)。可替換地,此處描述的各種技術(shù)可以實(shí)現(xiàn)為通過操作系統(tǒng)120運(yùn)行的軟件產(chǎn)品的部分??梢砸愿呒?jí)程序或面向?qū)ο蟮某绦蛟O(shè)計(jì)語言(例如,C、C++、Java等)實(shí)現(xiàn)每個(gè)計(jì)算機(jī)程序,或者如果期望則以匯編或機(jī)器語言實(shí)現(xiàn)每個(gè)計(jì)算機(jī)程序。該語言可以是編譯或解釋語言。機(jī)器可執(zhí)行指令不意指局限于任一特定程序設(shè)計(jì)語言及其實(shí)現(xiàn)。將理解的是,各種編程語言及其編碼可以用來實(shí)現(xiàn)此處包含的公開的教導(dǎo)。
      [0022]在一個(gè)實(shí)施方式中,數(shù)據(jù)庫122包括至少一個(gè)數(shù)據(jù)庫表格。數(shù)據(jù)庫表格可以存儲(chǔ)在隨機(jī)存取存儲(chǔ)器或大容量存儲(chǔ)器單元中。此外,一個(gè)或多個(gè)索引表可以提供以提高訪問數(shù)據(jù)庫表格的速度。數(shù)據(jù)庫表格可以包括用于數(shù)目為N的數(shù)據(jù)字段的N+1列,其中一個(gè)列用于存儲(chǔ)密鑰。每行構(gòu)成一個(gè)記錄,并且該行中的密鑰可以用來訪問來自數(shù)據(jù)庫表格的各個(gè)記錄。索引表可以將至少一個(gè)數(shù)據(jù)字段的數(shù)據(jù)值關(guān)聯(lián)到包含用于該數(shù)據(jù)字段的給定數(shù)據(jù)值的記錄的密鑰。
      [0023]數(shù)據(jù)庫表格可以是面向列或面向行的。通過將一個(gè)列的數(shù)據(jù)值、然后下一列的數(shù)據(jù)值等等串行化來存儲(chǔ)面向列的數(shù)據(jù)庫表格。相反地,面向行的數(shù)據(jù)庫表格存儲(chǔ)為數(shù)據(jù)行的分段(section)。數(shù)據(jù)庫表格的組織通常影響為了優(yōu)化性能而生成或選擇的查詢計(jì)劃的類型。
      [0024]DBMS 123包括用于定義、管理和處理數(shù)據(jù)庫122的程序的集合。客戶端計(jì)算機(jī)150處的用戶可以與用戶界面152交互以經(jīng)由DBMS 123與數(shù)據(jù)庫122通信。用戶和DBMS 123可以通過用戶界面152交換交易消息。例如,用戶可以向DBMS 123發(fā)送查詢,而DBMS 123可以使用數(shù)據(jù)庫122處理該查詢。當(dāng)事務(wù)完成時(shí),例如,DBMS 123以結(jié)果命中列表的形式向用戶發(fā)送結(jié)果。
      [0025]將理解地是,計(jì)算機(jī)系統(tǒng)106的不同的組件可以位于不同的機(jī)器上。例如,數(shù)據(jù)庫122和DBMS 123可以存在于不同的物理機(jī)器中。還將理解地是,客戶端計(jì)算機(jī)150的不同的組件也可以位于計(jì)算機(jī)系統(tǒng)106中。
      [0026]圖2是示出了通過示范性DBMS 123的查詢流200的框圖。可以通過計(jì)算機(jī)程序代碼配置圖1的計(jì)算機(jī)系統(tǒng)106以實(shí)現(xiàn)由流200表示的處理。
      [0027]在一個(gè)實(shí)施方式中,DBMS 123包括查詢分析器202、查詢優(yōu)化器204和查詢專家206。查詢分析器202從用戶界面152接收至少一個(gè)第一查詢。第一查詢可以包括用于訪問、修改、追加或操縱存儲(chǔ)在數(shù)據(jù)庫122中的數(shù)據(jù)的命令和/或子句的集合,并且第一查詢可以符合標(biāo)準(zhǔn)語法或查詢語言,諸如結(jié)構(gòu)化查詢語言(SQL)、SQLScript或任何其他語言。例如,它們可以指定數(shù)據(jù)庫122中的特定位置(例如,數(shù)據(jù)庫、表格、列或行)、對(duì)將要包括在查詢結(jié)果中的特定數(shù)據(jù)記錄必須適用的搜索標(biāo)準(zhǔn)、聚合方法、子查詢、聯(lián)接操作等等。
      [0028]查詢分析器202解析文本并執(zhí)行第一查詢的建設(shè)性(constructive)分析。查詢分析器202可以除去冗余數(shù)據(jù)或執(zhí)行錯(cuò)誤檢查,諸如驗(yàn)證第一查詢的語法、確認(rèn)表格當(dāng)中的關(guān)系等。此外,查詢分析器202可以將第一查詢轉(zhuǎn)換成為結(jié)構(gòu)化對(duì)象,諸如二叉樹數(shù)據(jù)結(jié)構(gòu)或任何其他合適的數(shù)據(jù)結(jié)構(gòu)。例如,結(jié)構(gòu)化對(duì)象可以包含具有有意義語法的查詢的分段,諸如填充的列名稱,使用的計(jì)算方法,分類字段,聯(lián)接條件等。
      [0029]查詢優(yōu)化器204從查詢分析器202接收結(jié)構(gòu)化對(duì)象并且自動(dòng)地重寫第一查詢以生成第二查詢。類似于第一查詢,第二查詢也可以符合定義的查詢語言(例如,SQL、SQLScript)。第二查詢產(chǎn)生對(duì)于下層數(shù)據(jù)庫122最有效的查詢計(jì)劃。例如,可以基于指定行為的先驗(yàn)知識(shí)和下層數(shù)據(jù)庫122的特性來確定產(chǎn)生的查詢計(jì)劃。在一個(gè)實(shí)施方式中,通過對(duì)于優(yōu)化第一查詢識(shí)別屬于哪個(gè)場(chǎng)景,并且執(zhí)行相應(yīng)的優(yōu)化操作以重寫第一查詢來生成第二查詢,如稍后將更詳細(xì)描述的??梢曰谙聦訑?shù)據(jù)庫的特性預(yù)定義相應(yīng)的操作。
      [0030]查詢優(yōu)化器204使第二查詢傳遞到查詢專家(query advisor) 206。查詢專家206可以生成一個(gè)或多個(gè)建議(或注釋),該建議(或注釋)推薦通過用戶的進(jìn)一步的動(dòng)作以利用第二查詢產(chǎn)生更好的性能。這種建議在系統(tǒng)級(jí)、整體級(jí)或數(shù)據(jù)庫管理級(jí),而不是語句級(jí)提供推薦。例如,該建議可以向用戶提供關(guān)于如何修改環(huán)境或模式以改善性能的建議,諸如除去用于特定表格中的指定列的壓縮等。
      [0031]通過查詢專家206生成的第二查詢和/或任一建議可以通過用戶界面152呈現(xiàn)給用戶。然后,用戶可以依照期望完成任一修改,并且相對(duì)于數(shù)據(jù)庫122運(yùn)行修改的第二查詢以訪問和操縱存儲(chǔ)在其中的數(shù)據(jù)。不同于提供“EXPLAIN”功能以便程序員可以預(yù)覽和監(jiān)視用于性能調(diào)節(jié)的查詢計(jì)劃的傳統(tǒng)方法,本公開的框架自動(dòng)地生成適合下層數(shù)據(jù)庫的指定特征或特性的優(yōu)化的查詢語句。通過提供基于下層數(shù)據(jù)庫的指定特性的先驗(yàn)知識(shí)來預(yù)定義的優(yōu)化功能的集合以實(shí)現(xiàn)此功能。
      [0032]不熟悉下層數(shù)據(jù)庫的程序員現(xiàn)在能夠通過給出的框架容易地和有效地優(yōu)化查詢。由于不需要用戶的專門知識(shí)或先前經(jīng)驗(yàn)用于性能調(diào)節(jié),所以提供該附加的優(yōu)點(diǎn)使得新數(shù)據(jù)庫產(chǎn)品被市場(chǎng)更廣泛地接受。當(dāng)數(shù)據(jù)量變化時(shí),全部用戶需要做的是輸入第一查詢并且利用通過本框架輸出的修改的第二查詢,而不必須重新人工地執(zhí)行冗長的和困難的性能調(diào)節(jié)處理。
      [0033]圖3示出用于優(yōu)化數(shù)據(jù)庫查詢的示范性方法300。可以通過計(jì)算機(jī)系統(tǒng)106實(shí)現(xiàn)示范性方法300,如參照?qǐng)D1先前描述的。
      [0034]在302,查詢優(yōu)化器204接收第一查詢。例如,第一查詢可以以結(jié)構(gòu)化對(duì)象、或由查詢分析器202生成的任一其他數(shù)據(jù)結(jié)構(gòu)的形式。第一查詢可以包括語言元素的集合,諸如子句、表達(dá)式、謂語、詢問等。在SQL語言中,例如,JOIN子句組合來自數(shù)據(jù)庫中的兩個(gè)或多個(gè)表格的記錄。
      [0035]在304,查詢優(yōu)化器204分析第一查詢并且基于第一查詢的語法自動(dòng)地識(shí)別用于優(yōu)化的至少一個(gè)場(chǎng)景。場(chǎng)景是指可以通過重寫而對(duì)于下層數(shù)據(jù)庫被優(yōu)化的查詢的類型。每個(gè)場(chǎng)景可以包括子場(chǎng)景。在一個(gè)實(shí)施方式中,基于使用的查詢語言的特定語法預(yù)定義每個(gè)場(chǎng)景。每個(gè)場(chǎng)景和/或子場(chǎng)景可以映射到用于重寫第一查詢的相應(yīng)的功能模塊或預(yù)定義的操作。
      [0036]圖4示出用于優(yōu)化的預(yù)定義的場(chǎng)景(402a_d)和子場(chǎng)景(406a_d)。應(yīng)該理解地是,本公開的框架不局限于此示出的場(chǎng)景,或者SQL查詢語言。例如,可以提供大于4個(gè)預(yù)定義的場(chǎng)景,或者可以基于使用的指定查詢語言來預(yù)定義其他類型的場(chǎng)景。
      [0037]如所示,預(yù)定義的場(chǎng)景(402a_d)可以包括Join (聯(lián)接)、Dynamic SQL (動(dòng)態(tài)SQL)、Sub-query (子查詢)和Other (其它)場(chǎng)景??梢酝ㄟ^檢測(cè)第一查詢中的指定語法來識(shí)別預(yù)定義的場(chǎng)景。例如,通過檢測(cè)第一查詢中的JOIN子句來識(shí)別“Join”場(chǎng)景??梢酝ㄟ^檢測(cè)子句“execO ”來識(shí)別“Dynamic SQL”場(chǎng)景。附加地,可以通過檢測(cè)嵌套在至少一個(gè)SELECT(選擇)、INSERT (插入)、UPDATE (更新)或DELETE (刪除)語句、或另一子查詢內(nèi)的SELECT子句來識(shí)別“Sub-query (子查詢)”場(chǎng)景?!癘ther”場(chǎng)景組合不屬于其它3個(gè)主場(chǎng)景的各種雜項(xiàng)的子場(chǎng)景。[0038]反過來參考圖3,在306,查詢優(yōu)化器204確定場(chǎng)景是否命中。如果相應(yīng)的功能模塊可以用來重寫和優(yōu)化第一查詢,則該場(chǎng)景命中。如果沒有找到功能模塊,則處理300在312繼續(xù)以檢查是否存在另一將要處理的場(chǎng)景。如果找到相應(yīng)的功能模塊,則處理300在308繼續(xù)以通過重寫第一查詢來生成第二查詢。
      [0039]每個(gè)功能模塊實(shí)現(xiàn)一個(gè)或多個(gè)預(yù)定義的操作以自動(dòng)地生成第二查詢。第二查詢功能上等效于第一查詢(即,返回相同的結(jié)果),但是以更有效的方式(例如,更快速和需要更少資源)來訪問或操縱下層數(shù)據(jù)庫中的信息。在一個(gè)實(shí)施方式中,基于數(shù)據(jù)庫的指定類型(例如,面向列或面向行)的特定特性、或者數(shù)據(jù)庫或數(shù)據(jù)庫管理系統(tǒng)的指定實(shí)現(xiàn)(例如,SAP HANA,Sybase IQ、微軟SQL等)的先驗(yàn)知識(shí)來定制功能模塊??商鎿Q地,功能模塊可以被設(shè)計(jì)為一般可應(yīng)用于大部分或各種數(shù)據(jù)庫或數(shù)據(jù)庫管理系統(tǒng)(例如,面向行或面向列兩者)。用戶界面152可以向用戶提供選項(xiàng)以選擇是否使用數(shù)據(jù)庫專用功能模塊或一般通用的功能模塊。
      [0040]本框架的一個(gè)實(shí)施方式提供用于優(yōu)化被分類為“Join”場(chǎng)景的第一查詢的第一功能模塊。如圖4所示,“Join”場(chǎng)景可以進(jìn)一步被劃分成示范性子場(chǎng)景:Type(類型)、Sequence(序列)、Condition (條件)。將理解地是,還可以提供其他類型的子場(chǎng)景。
      [0041]第一功能模塊可以通過重寫“Type”子場(chǎng)景查詢以改變“Join”類型來優(yōu)化“Type”子場(chǎng)景查詢。一般存在四個(gè)類型的“ Join”查詢:Inner (內(nèi))、Outer (外)、Leftand Right(左和右)?!癐nner Join (內(nèi)聯(lián)接)”可以轉(zhuǎn)換成等效的“Outer Join (外聯(lián)接)”,反之亦然。
      [0042]例如,典型的“Inner Join”查詢?nèi)缦?
      [0043]SELECT VBELN, POSNR FROM VBAP_ST1
      [0044]INNER JOIN VBAP T2 ON Tl.MAND=T2.MANDT AND
      [0045]Tl.VBELN=T2.VBELN AND Tl.P0SNR=T2.POSNR;
      [0046]這種“Inner Join”查詢語句可以重寫為等效的“Left Outer Join (左外聯(lián)接)”語句以提高性能,如下:
      [0047]SELECT VBELN, POSNR FROM VBAP_ST1
      [0048]LEFT OUTER JOIN VBAP T2 ON Tl.MAND=T2.MANDT
      [0049]AND Tl.VBELN=T2.VBELN AND Tl.P0SNR=T2.POSNR;
      [0050]在其他情況中,“Left Outer Join”或“Right Outer Join (右外聯(lián)接)”還可以重寫為等效的“Inner Join”以便改善數(shù)據(jù)庫訪問的速度。取決于下層數(shù)據(jù)庫的指定特性,其他類型的“Join”查詢語句也可以被重寫以提高數(shù)據(jù)庫性能。
      [0051]可以通過重新排列查詢中的“Join”語句的次序來優(yōu)化“Sequence”子場(chǎng)景查詢。如果“Join”語句被不同地排序,則一些數(shù)據(jù)庫生成不同的查詢計(jì)劃。因而,期望以特定順序重新排列“Join”語句的次序以便優(yōu)化下層數(shù)據(jù)庫的性能。
      [0052]例如,利用多個(gè)“Inner Join”語句的典型的查詢?nèi)缦?
      [0053]
      【權(quán)利要求】
      1.一種數(shù)據(jù)庫查詢優(yōu)化的方法,包括: (a)接收第一查詢; (b)由計(jì)算機(jī)通過在第一查詢中檢測(cè)指定語法來自動(dòng)地識(shí)別用于優(yōu)化的至少一個(gè)場(chǎng)景;以及 (C)由計(jì)算機(jī)通過使用與識(shí)別的場(chǎng)景對(duì)應(yīng)的預(yù)定義的操作來重寫第一查詢以自動(dòng)地生成第二查詢。
      2.如權(quán)利要求1所述的方法,其中所述第一查詢和第二查詢包括結(jié)構(gòu)化查詢語言(SQL)查詢。
      3.如權(quán)利要求1所述的方法,其中所述第一查詢包括通過查詢分析器生成的結(jié)構(gòu)化對(duì)象。
      4.如權(quán)利要求1所述的方法,其中所述場(chǎng)景包括“Join(聯(lián)接)”場(chǎng)景。
      5.如權(quán)利要求4所述的方法,其中所述預(yù)定義的操作包括改變第一查詢的“Join”類型。
      6.如權(quán)利要求5所述的方法,其中改變所述“Join”類型包括將第一查詢從“InnerJoin (內(nèi)聯(lián)接)”形式轉(zhuǎn) 換為等效的“Outer Join (外聯(lián)接)”形式。
      7.如權(quán)利要求5所述的方法,其中改變所述“Join”類型包括將第一查詢從“OuterJoin (外聯(lián)接)”形式轉(zhuǎn)換為等效的“Inner Join (內(nèi)聯(lián)接)”形式。
      8.如權(quán)利要求4所述的方法,其中所述預(yù)定義的操作包括重新排列第一查詢中的“Join” 語句。
      9.如權(quán)利要求8所述的方法,其中重新排列所述“Join”語句包括重新排列“InnerJoin”語句以使得處于相同的業(yè)務(wù)級(jí)別的表格位于相鄰位置。
      10.如權(quán)利要求8所述的方法,其中重新排列所述“Join”語句包括將“InnerJoin”語句排序在“Left Outer Join (左外聯(lián)接)”語句之前。
      11.如權(quán)利要求4所述的方法,其中所述預(yù)定義的操作包括改變“Join”語句中的一個(gè)或多個(gè)條件。
      12.如權(quán)利要求4所述的方法,其中所述預(yù)定義的操作包括將第一查詢從循環(huán)形式轉(zhuǎn)換到等效的非循環(huán)形式。
      13.如權(quán)利要求1所述的方法,其中所述場(chǎng)景包括“DynamicSQL (動(dòng)態(tài)SQL)”場(chǎng)景。
      14.如權(quán)利要求13所述的方法,其中所述預(yù)定義的操作包括將第一查詢從動(dòng)態(tài)SQL形式轉(zhuǎn)換到非動(dòng)態(tài)SQL形式。
      15.如權(quán)利要求13所述的方法,其中所述預(yù)定義的操作包括使用臨時(shí)數(shù)據(jù)結(jié)構(gòu)將第一查詢分開成為兩個(gè)或多個(gè)部分。
      16.如權(quán)利要求13所述的方法,其中所述預(yù)定義的操作包括將第一查詢中的數(shù)據(jù)依賴性分開成為兩個(gè)或多個(gè)不同的存儲(chǔ)過程。
      17.如權(quán)利要求1所述的方法,其中所述場(chǎng)景包括“Sub-query(子查詢)”場(chǎng)景。
      18.如權(quán)利要求17所述的方法,其中所述預(yù)定義的操作包括將“Where”子句從第一查詢的子查詢語句中移出或移入到第一查詢的子查詢語句中。
      19.如權(quán)利要求1所述的方法,還包括基于第一查詢生成一個(gè)或多個(gè)建議。
      20.一種具有存儲(chǔ)在其上的程序代碼的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),所述程序代碼由計(jì)算機(jī)執(zhí)行以進(jìn)行下述步驟: 接收第一查詢; 通過在第一查詢中檢測(cè)指定語法來自動(dòng)地識(shí)別用于優(yōu)化的至少一個(gè)場(chǎng)景;以及 通過使用與該識(shí)別情形對(duì)應(yīng)的預(yù)定義的操作來重寫第一查詢以自動(dòng)地生成第二查詢。
      21.—種系統(tǒng),包括: 非臨時(shí)性存儲(chǔ)設(shè)備,用于存儲(chǔ)計(jì)算機(jī)可讀程序代碼;以及 與存儲(chǔ)設(shè)備通信的處理器,該處理器利用計(jì)算機(jī)可讀程序代碼可操作以進(jìn)行如下步驟: 接收第一查詢; 通過在第一查詢中檢測(cè)指定語法來自動(dòng)地識(shí)別用于優(yōu)化的至少一個(gè)場(chǎng)景;以及 通過使用與該識(shí)別情形對(duì)應(yīng)的預(yù) 定義的操作來重寫第一查詢以自動(dòng)地生成第二查詢。
      【文檔編號(hào)】G06F17/30GK103714058SQ201210369839
      【公開日】2014年4月9日 申請(qǐng)日期:2012年9月28日 優(yōu)先權(quán)日:2012年9月28日
      【發(fā)明者】陳穎宇, 徐繪新 申請(qǐng)人:Sap股份公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1