亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

估計第一和第二表連接大小的方法和裝置的制作方法

文檔序號:6563094閱讀:149來源:國知局

專利名稱::估計第一和第二表連接大小的方法和裝置的制作方法
技術領域
:本發(fā)明涉及數(shù)據(jù)庫管理系統(tǒng),特別地,涉及估計連接的大小。
背景技術
:數(shù)據(jù)庫用于為無數(shù)的應用存儲信息,所述應用包括多種商業(yè)的、工業(yè)的、技術的、科學的和教育的應用。由于對信息的依賴的增長,存儲在多數(shù)數(shù)據(jù)庫中的信息量以及想要訪問所述信息的用戶數(shù)量同樣在增長。此外,由于數(shù)據(jù)庫中的信息量以及想要訪問所述數(shù)據(jù)庫的用戶數(shù)量的增長,用于管理這種數(shù)據(jù)庫所需的計算資源的數(shù)量也在增長。數(shù)據(jù)庫管理系統(tǒng)(DBMS)是用于訪問存儲在數(shù)據(jù)庫中的信息的計算機程序,因此其常常需要巨大的資源用以處理在這種系統(tǒng)上的繁重的工作量。這樣,投入了大量資源來增加數(shù)據(jù)庫管理系統(tǒng)對數(shù)據(jù)庫搜索或查詢處理的性能。計算機硬件和軟件的改進已經(jīng)改進了傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的能力。例如,在硬件領域,耦合了改進的存儲器管理系統(tǒng)的微處理器性能的增加已經(jīng)改進了特定微處理器在給定時間單元所能執(zhí)行的查詢的數(shù)目。進一步地,多個微處理器和/或多個連網(wǎng)的計算機的使用進一步增加了許多數(shù)據(jù)庫管理系統(tǒng)的能力。從軟件的立場,關系數(shù)據(jù)庫的使用充分地改進了處理效率,并且充分地簡化了數(shù)據(jù)庫中信息的創(chuàng)建、組織和擴展,其中所述關系數(shù)據(jù)庫將信息組織為在形式上被定義為包括行和列的表,并且典型地利用如結構化查詢語言(SQL)這樣的標準化語言來訪問。進一步地,重要的開發(fā)努力集中在了查詢“優(yōu)化”上,從而以自動的方式來優(yōu)化特定搜索或查詢的執(zhí)行以最小化執(zhí)行每個查詢所需的資源的數(shù)量。查詢優(yōu)化器典型地為每個提交的查詢產(chǎn)生生成訪問計劃。在生成訪問計劃時,查詢優(yōu)化器典型地創(chuàng)建多個潛在的訪問計劃,并且基于每個計劃的“成本”在那些潛在的訪問計劃中選擇最佳的計劃。每個計劃的成本表示由所述計劃期望使用的資源數(shù)量(典型地表示為期望的執(zhí)行時間數(shù)量),這樣,選擇具有最低成本的計劃典型地導致最高效(最快)的查詢執(zhí)行。查詢優(yōu)化存在問題的一個領域是和模糊邏輯搜索有關。通常,對查詢數(shù)據(jù)庫引入模糊邏輯規(guī)則產(chǎn)生了更好地反映執(zhí)行查詢的用戶意圖的查詢結果。通常地,在模糊邏輯之前,用戶必須通過其查詢來任意地量化和/或特征化他們的意圖,這常常導致查詢結果不能充分地反映他們的意圖。例如,用戶可能想要標識部門中的“優(yōu)秀”員工,如,有優(yōu)秀的銷售額以及良好投訴記錄的員工。通常地,銷售額越高并且對該員工的無確實根據(jù)的投訴數(shù)量越少,該員工就越好。但是,如果沒有模糊邏輯,用戶就必須指定該用戶認為是優(yōu)秀銷售額的最低銷售額,如,50,000美元或以上的銷售額,以及用戶必須指定該用戶認為是良好的無確實根據(jù)的投訴的數(shù)量,如,少于或等于5個投訴。該搜索可能被表示為查詢1SELECT*FROMEMPLOYEESWHERESALES>=50000ANDNUM_UNSUBSTANTIATED_COMPLAINTS<=5ORDERBYSALESDESC,NUM_UNSUBSTANTIATED_COMPLAINTSASC利用上述沒有結合模糊邏輯規(guī)則的查詢,該用戶通常將確切地接收到其所要求的、主要是具有50,000美元或以上銷售額并且無確實根據(jù)的投訴小于或等于5個的員工的列表。然而,這樣的搜索可能遺漏銷售額是49,999.99且無確實根據(jù)的投訴為0的員工或者遺漏具有6個無確實根據(jù)的投訴但是銷售額為100,000美元的員工,上述兩者都可能被該用戶認為是優(yōu)秀員工。進一步,在所述結果中該用戶可能認為具有50,000美元銷售額和0個無確實根據(jù)的投訴的員工比具有51,000美元銷售額并具有4個無確實根據(jù)的投訴的員工要優(yōu)秀,但是這些沒有被反映出來。相反,模糊邏輯規(guī)則可以用于處理數(shù)據(jù)庫查詢以限定用戶不必通過銷售額和無確實根據(jù)的投訴數(shù)量的條件來任意地確定構成優(yōu)秀員工的條件。通常地,模糊邏輯允許銷售額條件根據(jù)銷售額的連續(xù)函數(shù)進行表示以及無確實根據(jù)的投訴數(shù)量條件根據(jù)無確實根據(jù)的投訴數(shù)量的連續(xù)函數(shù)進行表示。根據(jù)每個相應的連續(xù)函數(shù)的組成員關系(membership)可以由從0到1的域中的值來測量。典型地,值“1”指示意味著條件完全滿足的組中100%的成員關系,以及值“0”指示意味著條件一般不滿足的組中0%的成員關系。落在0和1之間的值指示組中的某些成員關系并且可以使用算法來確定。例如,值“.9876”可以指示比值“.1234”更高的在組中的成員關系。這樣,根據(jù)前面的例子,銷售額組中的成員關系可以表示為連續(xù)的函數(shù),例如,其中銷售額多于100,000美元指示1的成員關系,以及例如,銷售額少于40000美元指示0的成員關系。相似地,無確實根據(jù)的投訴組中的成員關系可以表示為連續(xù)的函數(shù),其中例如,如果員工具有少于兩個無確實根據(jù)的投訴時,則他或她在組中的成員關系是1。然而,例如,如果無確實根據(jù)的投訴數(shù)量多于10,則成員關系為0。對于具有多于一個這種條件的查詢,可以確定每個組成員關系并且可以利用組成員關系值的加權平均,或者依據(jù)查詢操作(如,與操作、或操作、非操作等)來利用最小的和/或最大的組成員關系值以生成用戶的優(yōu)秀員工列表。通常地,所述員工列表可以更好地近似于符合用戶意圖的優(yōu)秀員工。例如,可以包括典型地將被如上面所示的通常查詢所遺漏的員工,并且那些被包括的員工典型地基于它們怎樣相對地符合兩個條件而進行排序。如上面指出的,數(shù)據(jù)庫環(huán)境中引入模糊邏輯規(guī)則可以使查詢優(yōu)化變得復雜。特別地,它有助于在優(yōu)化期間估計記錄數(shù)量,所述記錄當處理數(shù)據(jù)庫謂詞查詢中的給定條件時被返回。基于所述估計,所述優(yōu)化器能夠更好地比較所述訪問計劃,并且在運行時條件下選出最好的計劃。確定了上述目標,表中的數(shù)據(jù)可以被分類并放到柱狀的存儲段(bucket)中,以及可以存儲關于所述柱狀存儲段的描述信息。例如,存儲段的高低值、每個存儲段中的記錄數(shù)量以及所述表的高低值都可以被存儲。這樣,優(yōu)化器可以依據(jù)與所述存儲數(shù)據(jù)聯(lián)合的公式來估計記錄數(shù)量,所述記錄可以根據(jù)給定標準被返回。某些優(yōu)化器還利用所述公式來作額外的估計。例如,用于估計小于x(如,x的值可以在例如table1.field1<x這樣的數(shù)據(jù)庫謂詞查詢中)的可以被返回的記錄的數(shù)量的公式可以被重寫,以便估計小于或等于x的可以被返回的記錄的數(shù)量。通常地,這些技術適于用來估計可以根據(jù)給定標準從單一表中返回的記錄的數(shù)量;然而,已經(jīng)發(fā)現(xiàn)了對在兩個表的連接操作之后可被返回的記錄數(shù)量(也被稱為連接大小)進行估計會引起不準確性和/或不一致性。結果,優(yōu)化器可以基于所述不準確性和不一致性在運行時條件下選出次最佳的訪問計劃。連接典型地是用于根據(jù)某些標準聯(lián)合來自兩個或多個不同表的數(shù)據(jù)的操作。連接操作在數(shù)據(jù)庫查詢中是常見的并且通常被用于訪問來自關系數(shù)據(jù)庫的數(shù)據(jù)。特別地,其數(shù)學特性(如,(A<B)=1-(A>=B)or(A<=B)=(A<B)+(A=B))通過所述公式被優(yōu)化器用來為例如這些不等式的額外關系估計連接大小,所述數(shù)學特性被應用于通常本質(zhì)上“模糊”的值。這樣,為這些不等式估計連接大小類似于上文中的查詢1,通常導致不適當?shù)慕Y果。特別地,在現(xiàn)代的基于成本的查詢優(yōu)化中,為了更快速地訪問和恢復,與前面的數(shù)據(jù)庫查詢聯(lián)合使用的連接大小估計(和訪問計劃)被存儲并被重新使用。然而,在傳統(tǒng)設計中,在此上下文中重新使用估計會出現(xiàn)問題。例如,如果結果對于A<B和A=B早已可用,則在傳統(tǒng)設計中聯(lián)合這些結果來估計A>B的結果是不可靠的,因為使用了傳統(tǒng)計算|A<=B|+|A>B|<>|叉積(crossproduct)|。相反,|叉積|-|A<=B|可能導致少于或非常接近0的值。負數(shù)和接近0的數(shù)字通常導致與較大的數(shù)字根本上不同的行為,而這是不希望的。進一步地,即使當公式?jīng)]有被優(yōu)化器重寫以用于估計額外的關系,但如果用戶重新用公式表示數(shù)據(jù)庫查詢也會導致不一致性。因此在本領域存在對用于估計連接大小的改進方法的需求,特別是,對用于對導致更加一致的估計的連接大小進行估計的改進方法的需求。
發(fā)明內(nèi)容本發(fā)明通過提供一種裝置、程序產(chǎn)品和方法來解決關聯(lián)于現(xiàn)有技術的這些和其它問題,所述裝置、程序產(chǎn)品和方法通過生成部分連接估計并聯(lián)合所述部分連接估計來計算連接大小的估計。所述部分連接估計的操作可以用于根據(jù)給定條件產(chǎn)生一致的連接大小估計,并且因此使得能夠進行在運行時條件下更加優(yōu)化的訪問計劃的選擇。與本發(fā)明相一致的某些實施例可以根據(jù)給定條件來為來自于與將被連接的表的直方圖相關聯(lián)的合并區(qū)域計算部分連接估計。此外,部分連接估計可以被聯(lián)合以計算連接大小估計。特別地,可以生成連接大小估計來估計記錄的數(shù)量,所述記錄可以在第一表的數(shù)據(jù)值等于、小于、小于等于、大于、和/或大于等于第二表的數(shù)據(jù)值時被返回。可以通過將來自于與合并區(qū)域相關聯(lián)的第一表的直方圖的存儲段或區(qū)域的密度和來自于與所述合并區(qū)域相關聯(lián)的第二表的直方圖的存儲段或區(qū)域的密度按照所述合并區(qū)域的寬度來進行比例縮放(scaling),來生成部分連接估計。所述密度可以通過將存儲段的計數(shù)除以存儲段的寬度來計算。所述存儲段的計數(shù)表示在存儲段中數(shù)據(jù)值的數(shù)量??梢栽诿芏鹊目s放中引入模糊邏輯規(guī)則,這樣,所述密度的值可以是在0和1之間的值。結果,部分連接估計,以及通過聯(lián)合所述部分連接估計而最終產(chǎn)生的連接大小估計可以更一致,因為它們可以基于合并了模糊邏輯規(guī)則的所述進行過縮放的密度。表征本發(fā)明的這些以及其它優(yōu)點和特征在權利要求中闡明并形成本發(fā)明的進一步的部分。然而,為了更好理解本發(fā)明以及通過其使用所獲得的優(yōu)點和目標,應當參考附圖以及所附的描述主題,在其中描述了本發(fā)明的示例性實施例。圖1是引入了數(shù)據(jù)庫管理系統(tǒng)的連網(wǎng)計算機系統(tǒng)的框圖,在所述數(shù)據(jù)庫管理系統(tǒng)中實現(xiàn)了與本發(fā)明相一致的查詢優(yōu)化。圖2是例示在圖1的數(shù)據(jù)庫管理系統(tǒng)的主要組件和在其之間的信息流的框圖。圖3是例示了用于圖1的數(shù)據(jù)庫管理系統(tǒng)中的連接大小估計例程的一個實現(xiàn)的程序流的流程圖。圖4是用于表A的直方圖A的一個實現(xiàn)和用于表B的直方圖B的一個實現(xiàn),以及可以從中生成的合并區(qū)域的圖。具體實施例方式此后討論的實施例通過生成部分連接估計并聯(lián)合所述部分連接估計來計算連接大小估計。例如,連接大小估計可以估計記錄數(shù)量,所述記錄可以在第一表的數(shù)據(jù)值等于、小于、小于等于、大于、和/或大于等于第二表的數(shù)據(jù)值時被返回。通常地,下面描述的用于估計連接大小的公式在本質(zhì)上是健壯的,即,它們產(chǎn)生一致的估計。在此包括了用于對前面提及的每個關系計算連接大小估計的健壯的公式并且將結合附圖3中的例程60來進行討論。如上面指出的,連接大小估計可以基于多個部分連接估計的聯(lián)合。在這點上,部分連接估計可以是在生成所述連接大小估計時使用合并區(qū)域所計算出的任何中間估計。合并區(qū)域可以是從將被連接的表的直方圖的至少一部分中形成的任何區(qū)域。在所例示的實施例中,可以從將被連接的表的直方圖生成多個合并區(qū)域,并且在將被連接的表的直方圖中存在的合并區(qū)域可以比存儲段更多。通常地,在所例示的實施例中定義的合并區(qū)域可以包括下界(lowrange)和上界(highrange),所述下界是獨占的而所述上界是包括的。此外,合并區(qū)域的上界可以是下一個合并區(qū)域的下界。所述合并區(qū)域的下界和上界可以重疊于將被連接的表的直方圖的一個區(qū)域,即,合并區(qū)域的下界和/或上界可以是來自于將被連接的表的直方圖的存儲段的界限(bound)。例如,合并區(qū)域的下界可以是將被連接的第一表的第一直方圖的存儲段的下限(lowerbound)以及合并區(qū)域的上界可以是將被連接的第二表的第二直方圖的存儲段的上限(upperbound)。此外,合并區(qū)域的所述下界和上界可以是來自將被連接的表的單一直方圖。例如,合并區(qū)域的所述下界和上界可以和直方圖存儲段的下限和上限相一致,但是與本發(fā)明相一致的實施例中不必是這種情況。合并區(qū)域的生成將結合附圖3中的例程60進行進一步的討論。進一步,為了簡單起見,參考在整個此申請中的表,如,表的直方圖、連接表和/或相似物;然而,讀者應該明白,所述參考也可以指所述表的特定的列,如本領域普通技術人員可以理解的一樣?,F(xiàn)在參考附圖,其中在若干視圖中相同的數(shù)字代表相同的部分,圖1例示了裝置10的示例性的硬件和軟件環(huán)境,所述裝置10適合于實現(xiàn)引入了與本發(fā)明一致的查詢優(yōu)化的數(shù)據(jù)庫管理系統(tǒng)。為了本發(fā)明的目的,裝置10實際上可以表示任意類型的計算機、計算機系統(tǒng)或其它可編程電子設備,包括客戶端計算機、服務器計算機、便攜式計算機、手持計算機、嵌入式控制器等。此外,裝置10可以利用一個或多個連網(wǎng)的計算機(如,在一個集群或其它分布式計算機系統(tǒng)中)來實現(xiàn)。下文中,裝置10也指“計算機”,盡管應該認識到,術語“裝置”還可以包括與本發(fā)明相一致的其它適合的可編程電子設備。計算機10典型地包括中央處理單元(CPU)12,所述中央處理單元包含一個或多個耦合到存儲器14的微處理器,所述存儲器可以表示包括計算機10主存儲器以及的隨機存取存儲器(RAM)設備,也可以表示任意輔助級別的存儲器,如,高速緩沖存儲器、非易失性或備份存儲器(如,可編程或閃速存儲器)、只讀存儲器等。此外,存儲器14可以被認為包括物理上位于計算機10中其它地方的存儲器,如,在CPU12的處理器中的任意高速緩沖存儲器,以及例如存儲在海量存儲裝置16或耦合到計算機10上的另一計算機上的用作虛擬存儲器的任意存儲容量。計算機10也典型地接收多個輸入和輸出以用于和外部進行信息傳送。對于與用戶或操作者的接口,計算機10典型地包括合并一個或多個用戶輸入設備(如,鍵盤、鼠標、軌跡球、操縱桿、觸摸板和/或麥克風、以及其它)和顯示器(如,CRT監(jiān)視器、LCD顯示面板和/或揚聲器、以及其它)的用戶接口18。另外,用戶輸入可以通過另一計算機或終端接收,如,通過客戶端或通過網(wǎng)絡22耦合到計算機10上的單用戶計算機20。后一實現(xiàn)是所希望的,其中計算機10被實現(xiàn)為服務器或其它形式的多用戶計算機。然而,應該理解,計算機10在某些實施例中還可以被實現(xiàn)為獨立的工作站、臺式機、或其它單用戶計算機。對于非易失性存儲裝置,計算機10典型地包括一個或多個海量存儲設備16,如,軟盤或其它可移除盤驅動器、硬盤驅動器、直接存取存儲設備(DASD)、光驅動器(如,CD驅動器、DVD驅動器等)、和/或磁帶驅動器、以及其它。此外,計算機10還可以包括與一個或多個網(wǎng)絡22(如,LAN、WAN、無線網(wǎng)絡、和/或因特網(wǎng),以及其它)之間的接口24以允許與其它計算機和電子設備進行信息傳送。應該理解,計算機10典型地包括如本領域公知的在CPU12和組件14、16、18和24中的每個之間的適合的模擬和/或數(shù)字接口。計算機10在操作系統(tǒng)26的控制下運行,并執(zhí)行或者依賴于多種計算機軟件應用、組件、程序、對象、模塊、數(shù)據(jù)結構等。例如,數(shù)據(jù)庫管理系統(tǒng)(DBMS)28可以駐于存儲器14中以訪問駐于海量存儲裝置16中的數(shù)據(jù)庫30。此外,多種應用、組件、程序、對象、模塊等也可以在通過網(wǎng)絡耦合到計算機10的另一計算機中的一個或多個處理器上執(zhí)行,如,在分布式或客戶端-服務器計算環(huán)境中,其中實現(xiàn)計算機程序功能所需的處理通過網(wǎng)絡分配到多個計算機。通常地,被執(zhí)行以實現(xiàn)本發(fā)明實施例的所述例程,不論作為操作系統(tǒng)或者特定應用、組件、程序、對象、模塊或指令序列、或甚至它們的子集的一部分被實現(xiàn),在此都是指“計算機程序代碼”或簡稱“程序代碼”。程序代碼典型地包括在多個時刻駐留在計算機的多個存儲器和存儲設備中的一個或多個指令,以及,當被計算機的一個或多個處理器讀取并執(zhí)行時,使得計算機執(zhí)行用于執(zhí)行體現(xiàn)本發(fā)明多個方面的單元或步驟所必須的步驟。此外,盡管本發(fā)明具有并且此后在具有完全功能的計算機和計算機系統(tǒng)的環(huán)境中將描述的實施例,但本領域技術人員將理解,本發(fā)明的多個實施例能夠以多種形式作為程序產(chǎn)品被分發(fā),并且不論用于實際執(zhí)行所述分發(fā)的特定類型的計算機可讀媒體,本發(fā)明都可以同等地進行應用。計算機可讀媒體的例子包括但不限于有形的、可記錄類型媒體(如易失性和非易失性存儲器設備、軟盤和其它可移除盤、硬盤驅動器、磁帶、光盤(如,CD-ROM、DVD等),以及其它)以及傳輸類型媒體(例如數(shù)字和模擬通信鏈路)。此外,此后描述的多種程序代碼可以基于所述應用被標識,其中在所述應用中在本發(fā)明的特定實施例中實現(xiàn)所述應用。然而,應理解,下面所使用的任意特定程序術語僅僅是為了方便,并且因此本發(fā)明不應當限于唯一地使用在由這樣的術語所定義和/或暗示的任意特定應用中。進一步地,盡管給定典型地無窮多的方式,其中計算機程序可以被組織為例程、過程、方法、模塊、對象等,還可以給定多種方式,其中可以對駐留在典型計算機中的多種軟件層(如,操作系統(tǒng)、庫、API、應用、小應用程序等)之間分配程序功能,但應理解,本發(fā)明不限于此處描述的程序功能的特定組織和分配。本領域技術人員將認識到,圖1所例示的示例性環(huán)境的目的并不是限制本發(fā)明。實質(zhì)上,本領域技術人員將認識到,可以使用其它可選的硬件和/或軟件環(huán)境而不脫離本發(fā)明的范圍。圖2接著更加詳細地例示了DBMS28的一個實現(xiàn)中的主要組件。通常與查詢執(zhí)行相關的所述DBMS28的主要組件是結構化查詢語言(SQL)分析器40、查詢優(yōu)化器42和數(shù)據(jù)庫引擎44。SQL分析器40從用戶(或更典型地,從由用戶執(zhí)行的應用)接收數(shù)據(jù)庫查詢46,其在所示的實施例中以SQL語句的形式提供。然后SQL分析器40從中生成已分析語句48,其被傳送到用于查詢優(yōu)化的優(yōu)化器42。作為查詢優(yōu)化的結果,生成執(zhí)行或訪問計劃50。一旦生成之后,所述執(zhí)行計劃被轉發(fā)到用于對數(shù)據(jù)庫30中的信息執(zhí)行數(shù)據(jù)庫查詢的數(shù)據(jù)庫引擎44。所述數(shù)據(jù)庫查詢的執(zhí)行結果典型地存儲在結果集合中,如框52所示。為了便于優(yōu)化,可以在DBMS28中引入統(tǒng)計管理器54。通常地,與本發(fā)明相一致的實施例中的DBMS能夠確定來自將被連接的表的直方圖的多個合并區(qū)域。此外,所述DBMS能夠為每個合并區(qū)域計算部分連接估計并且聯(lián)合所述部分連接估計。所述部分連接估計可以基于在此包括的健壯的公式。圖3接著例示例程60,其是連接大小估計例程的示例性實現(xiàn),其確定合并區(qū)域、為合并區(qū)域計算部分連接估計、以及聯(lián)合所述部分連接估計以生成可以被DBMS用來執(zhí)行優(yōu)化的連接大小估計。將被連接的表可以從數(shù)據(jù)庫查詢來確定。特別地,例程60利用合并了模糊邏輯規(guī)則的健壯的公式來生成估計。轉到例程60,例程60依賴于用于將被連接的表的直方圖的存在。特別地,整個例程60中,引用和操作用于表A的直方圖A和用于表B的直方圖B、直方圖A和直方圖B的存儲段、以及直方圖A和直方圖B的上下限。本領域普通技術人員公知的任意技術都可用于生成所述直方圖。參考框62,在框62中多種變量被引用并初始化。變量i用于通過直方圖A的存儲段進行循環(huán),而變量j用于通過直方圖B的存儲段進行循環(huán)。特別地,A.upper[i]和B.upper[j]分別表示直方圖A和B的存儲段的數(shù)組。通常地,A.upper[i]和B.upper[j]可以分別用于通過直方圖A和B的存儲段的下限和/或上限進行迭代。特別地,變量i和j被初始化為值負1。A.upper[-1]表示直方圖A的第一存儲段的下限,而B.upper[-1]表示直方圖B的第一存儲段的下限。對A.upper[i]和B.upper[j]沒有限制,即,A.upper[i]=∞和/或B.upper[j]=∞。此外,A.upper[A.length]可以等于無窮,即A.upper[A.length]=∞,和/或B.upper[B.length]可以等于無窮,即,B.upper[B.length]=∞,其中.length表示各自直方圖的存儲段的數(shù)量。這樣,可以在直方圖中具有無窮數(shù)量的界限。total變量表示為每個合并區(qū)域所計算的部分連接估計的累計,而accum變量表示用于不等式的累加器。所述accum變量通常表示在直方圖A中有多少個值小于合并區(qū)域的下界的估計(結合框78作了更詳細的討論)。prev變量通常表示在合并區(qū)域中的直方圖B中的值和來自accum變量的直方圖A中的值之間的叉積(結合框78作了更詳細的討論)。所述accum和/或prev變量可以用于為不等式估計部分連接估計和連接大小,所述不等式如,<、<=、>和/或>=。所述變量total、accum和prev可以在框62中被初始化為值0。接著,在框64中,直方圖A和直方圖B可以例如從存儲器中被讀取。例如在框64中,當直方圖A和B被生成之后,可以利用本領域普通技術人員已知的任意技術將所述直方圖存儲到存儲器并讀取。直方圖A和直方圖B可以根據(jù)需要被讀取。接著,在框66中,直方圖A和B的存儲段的界限(即,下限和/或上限)被相互比較,并且基于所述比較,控制可以轉到框68、框70或框72。需要特別指出,在從框64擴展到78的循環(huán)的第一迭代中,所述變量i和j被首先被設置為負1,即A.upper[-1]和B.upper[-1],因為變量i和j在框62中被初始化為負1。因此,A.upper[-1]指直方圖A的第一存儲段的下限,而B.upper[-1]指直方圖B的第一存儲段的下限。返回框66,可以執(zhí)行對A.upper[i]和B.upper[j]的比較以確定最下限的值。如果由A.upper[i]表示的所述界限值小于由B.upper[j]表示的界限值,那么最下限值是A.upper[i]的值,并且控制轉到框68。此外,在框68中變量i遞增1。另一方面,重新回到框66,如果由A.upper[i]表示的所述界限值大于由B.upper[j]表示的界限值,那么最下限值是B.upper[j]的值,并且控制轉到框72。在框72中,變量j可以加1。然而,如果由A.upper[i]表示的界限值等于由B.upper[j]表示的界限值,則最下限值是A.upper[i]或B.upper[j]的值,并且控制轉到框70。在框70中,變量i和j可以各自加1。變量通常被加1,這樣在下一個迭代循環(huán)中,可以比較直方圖A和B的界限值。例如,通過將變量i加1,直方圖A的下一界限值可以通過A.upper[i]進行訪問,并且與B.upper[j]的界限值進行比較,該界限值不是新的界限值(例如如果j遞增1)、就是與B.upper[j]相同的界限值。相似地,通過將變量j加1,直方圖B的下一界限值可以通過B.upper[j]進行訪問,并且與A.upper[i]的界限值進行比較,該界限值不是新的界限值(例如如果i遞增1)、就是與A.upper[i]相同的界限值。接著,控制從框68、70或72轉到框76???6確定循環(huán)是否結束。特別地,在框76中,確定變量i是否等于A.length以及變量j是否等于B.length。A.length和B.length分別表示直方圖A和直方圖B中的存儲段的數(shù)量。如果框76的條件符合,則控制轉到框80并且所述例程結束。在框80中,所述total的值通常表示部分連接估計的聯(lián)合,然而,所述total的值可以在框80中根據(jù)所使用的公式和/或所查找的連接大小估計進行調(diào)整。如果框76的條件不符合,則控制轉到框77以生成包括其下界和上界的合并區(qū)域,然后控制轉到框78,以為所述合并區(qū)域計算部分連接估計,并且利用所述total值聯(lián)合所述部分連接估計。為進一步示例合并區(qū)域的概念,圖4一般地例示了可以從直方圖A和B的一個示例性實現(xiàn)中生成的合并區(qū)域。所例示的直方圖A具有四個存儲段,而直方圖B具有六個存儲段。在直方圖A和B中,每對垂直線表示一個存儲段。此外,基于直方圖A和B例示了十個合并區(qū)域。每對垂直線表示一個合并區(qū)域。返回圖3,從框66中的比較中確定的最下限值可變?yōu)榭?7中合并區(qū)域的下界或者上界。換句話說,所述合并區(qū)域可以與直方圖A和/或直方圖B的區(qū)域或存儲段重疊。通常地,合并區(qū)域可以由獨占的下界和包含的上界構成,如,(-1,0]。是否可以把從框66確定的最下限值指定為所述合并區(qū)域的下界或上界可以取決于所述合并區(qū)域是否已經(jīng)具有下界。此外,在與本發(fā)明相一致的實施例中,合并區(qū)域的上界可以變成下一合并區(qū)域的下界。本領域普通技術人員可以理解,通常合并區(qū)域可以利用如下算法通過在直方圖A和B之間進行迭代來憑空構造HR(M)=Min(UB(currA),UB(currB))LR(M)=Min(LB(currA),LB(currB))do_calculationsifUB(currA)>UB(currB)nextB(currB);elseifUB(currA)<UB(currB)nextA(currA)elsenextA(currA);nextB(currB)特別地,M是合并區(qū)域,currA表示直方圖A的當前界限,而currB是直方圖B的當前界限。UB表示上限而LB表示下限。HR表示上界而LR表示下界。nextA和nextB各自表示直方圖A和B的下一界限。值得注意的是,在第一循環(huán)迭代期間,將被生成的第一合并區(qū)域可能不具有下界或上界。這樣,從框66確定的最下限值可以是第一合并區(qū)域的下界。此外,在第二循環(huán)迭代期間,從框66確定的后續(xù)最下限值可以變?yōu)榈谝缓喜^(qū)域的上界。這樣,第一合并區(qū)域以及其下界和上界的創(chuàng)建可以依據(jù)兩次循環(huán)迭代。此外,本領域普通技術人員可以了解,在第一合并區(qū)域被創(chuàng)建之后,在兩次循環(huán)迭代之后,所述第一合并區(qū)域的上界可以變?yōu)橄乱缓喜^(qū)域的下界,并且從框66確定的下一最下限值可以變?yōu)橄乱缓喜^(qū)域的上界,依此類推。這樣,合并區(qū)域的下界可以是前一合并區(qū)域的上界,并且所述合并區(qū)域的上界可以是從框66確定的下一最下限值。作為例子,在第一循環(huán)迭代期間,由框66確定的最下限值可以是2;這樣在框77中所述第一合并區(qū)域可以具有下界2,即(2,_]。在第二循環(huán)迭代期間,由框66確定的所述最下限值可以是4;這樣在框77中所述第一合并區(qū)域的上界可以為4,即(2,4]。在第三循環(huán)迭代期間,下一合并區(qū)域的下界可以是前一合并區(qū)域的上界,即4,以及所述合并區(qū)域的上界可以是框66確定的下一最下限的值,如9。這樣,在第三迭代期間,在框77中所述合并區(qū)域可以是(4,9))。此外,值得注意的是,循環(huán)的順序可以改變。例如,框77的動作可以在框66之后并且在框68、70和/或72之前執(zhí)行。接著,在框78中可以為所述合并區(qū)域計算部分連接估計并且將所述部分連接估計與total變量進行聯(lián)合。如上文所提到的,直到第二迭代才生成第一合并區(qū)域;這樣,框78在第一循環(huán)迭代期間可以被跳過。但是,依據(jù)所查找的連接大小估計的類型,可以利用此后給出的五個公式之一來為所述合并區(qū)域計算所述部分連接估計。此外,在框78中可以計算多于一個的部分連接估計。例如,在下面例示的例子中,在表III和表V中例示了三個連接大小估計以及導致所述連接大小估計的部分連接估計。這樣,可以具有多于一個的total變量,如,對于每個連接大小估計,可以通過部分連接估計更新不同的total值。此外,值得注意的是,某些公式可以分離成兩個部分。例如,第一部分可以用于生成部分連接估計,而后一部分可以在所有部分連接估計都被聯(lián)合之后使用。所述公式是否可以分為兩個部分可以取決于所查找的連接大小估計,如,<和<=公式可以被分離。然而,所述公式不必進行分離。但是,所述公式通常依據(jù)平均分布假設和模糊邏輯規(guī)則。這樣,所述公式避免生成之外的密度并且可以導致更加一致的估計以及增加全面的準確性。在利用公式之一生成所述部分連接估計并且將其和相應的total變量進行聯(lián)合之后,控制轉到框64。每個公式將在下面進行單獨討論。如果所查找的連接大小估計是等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計,則可以基于下面的公式在框78中為框77的合并區(qū)域生成部分連接估計A=Bforeach(currM,M)total+=|currA|*|currB|*width(currM)通??梢岳眠@個公式為每個合并區(qū)域計算部分連接估計。術語|currA|表示關聯(lián)于當前合并區(qū)域(即,currM)的直方圖A的當前存儲段的密度。術語|currB|表示關聯(lián)于當前合并區(qū)域的直方圖B的當前存儲段的密度。關聯(lián)于合并區(qū)域的存儲段指直方圖A和直方圖B中的存儲段,其中所述合并區(qū)域完全在存儲段的界限中和/或所述合并區(qū)域與存儲段的一部分重疊,如,合并區(qū)域的上界與直方圖A的存儲段的下限相同。存儲段的密度可以通過把存儲段的計數(shù)除以存儲段的寬度來確定。存儲段的計數(shù)可以存儲在例如A.bucket_counts[]的數(shù)組中,并且可以在框64中被讀取。通常地,A.bucket_counts[-1]、B.bucket_counts[-1]、A.bucket_counts[A.length]和B.bucket_counts[B.length]可以被初始化為0,并且當所述值被讀入時可以被更新。典型地,存儲段的計數(shù)表示存儲段中數(shù)據(jù)值的數(shù)量,存儲段的寬度表示存儲段的上界和下界的差,而合并區(qū)域的寬度表示合并區(qū)域的上界和下界的差?;诎摹⑾噜彧氄嫉膮^(qū)域和/或直方圖的存儲方式,需要通過對存儲段的寬度加1或減1來對存儲段的寬度進行調(diào)整。符號“*”被引用于整個具體實施方式中并且表示相乘。這樣,根據(jù)這個公式,為了為合并區(qū)域生成部分連接估計,密度currA與密度currB相乘,并且與合并區(qū)域的寬度相乘。此外,通過公式為每個合并區(qū)域計算的部分連接估計可以與total值聯(lián)合,如,通過相加的方式。total變量通常保持為為每個合并區(qū)域生成的每個部分連接估計的累計。一旦為所述第一合并區(qū)域生成部分連接估計,則可能在兩次循環(huán)迭代之后,在每個后繼的循環(huán)迭代期間可以利用這個公式生成部分連接估計并且將其加到total值。當控制最終轉到框80時,在框80中的total值將表示為條件(A=B)時的連接大小估計,而對于條件(A=B),進一步調(diào)整total變量也許是不合適的。返回到框78,如果所查找的連接大小估計是小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計,則可以基于下面的公式在框78中為框77的合并區(qū)域生成部分連接估計A<Bforeach(currM,M)total+=1/20*|currA|*|currB|*width(currM)*(width(currM)-1)特別地,提供(width(currM)-1)來排除來自于與合并區(qū)域相關聯(lián)的相等的直方圖A和直方圖B存儲段的數(shù)據(jù)值。一般地利用這個公式可以為每個合并區(qū)域計算部分連接估計。與框77、78和/或80相關的前面討論可以是部分地或全部地相關的和可適用的。此外,當所查找的連接大小估計用于不等式時,可以為框78中的每個合并區(qū)域計算accum變量值和prev變量值。所述accum變量是比合并區(qū)域的下界更小的TableA的數(shù)據(jù)值的數(shù)量的累計,通常被表示為foreach(currM,M)accum(currA)+=|priorA|*width(priorM)可以通過將關聯(lián)于前一合并區(qū)域的直方圖A的存儲段的密度(即priorA)和前一合并區(qū)域的寬度(即priorM)相乘,并將該乘積加到所述accum值來為每個合并區(qū)域計算accum變量的值。通常,當所查找的連接大小估計是小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計時,所述accum允許例程60執(zhí)行一遍??梢酝ㄟ^foreach(currM,M)prev|currB|*width(currM)*accum(currA)來為每個合并區(qū)域計算所述prev值。所述prev值是關聯(lián)于合并區(qū)域的TableB的直方圖的存儲段的數(shù)據(jù)值與來自accum的關聯(lián)于合并區(qū)域的TableA的直方圖的存儲段的數(shù)據(jù)值之間的被估計的叉積。第一合并區(qū)域的accum值和/或prev值可以為0,因為在第一合并區(qū)域之前可能沒有基于accum和/或prev變量的計算的值。特別地,為循環(huán)的每個合并區(qū)域計算的部分連接估計可以與total值聯(lián)合,其保持為為每個合并區(qū)域生成的每個部分連接估計的累計。然而,如果在框76確定變量i等于A.length以及變量j等于B.length并且控制轉到框80,則在框80中為每個合并區(qū)域生成的prev值可以加到total變量上。這樣,變量prev可以用在與框80有關的公式的第二部分中。特別地,在框80中,合并了accum值的prev值可以加到total值上。這樣,所查詢的連接大小估計可以基于prev值和total值的和。換句話說,在框80中prev值的總數(shù)可以加到部分連接估計的總數(shù)(即total)上。雖然框80可能不適合于等于TableB的TableA的數(shù)據(jù)值的連接大小估計,但在框80中total變量的調(diào)整可以適合于小于TableB的TableA的數(shù)據(jù)值的連接大小估計。此外,值得注意的是,本領域普通技術人員可以理解,該公式可以相似于計算三角形面積。特別地,所述估計可以通過將重疊total(三角形)加到prev值(矩形)而得到。另一方面,通??梢酝ㄟ^用為每個合并區(qū)域生成的prev值來增加total值以代替在框80中把prev值加到total值上來為每個合并區(qū)域計算小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的連接大小估計。這樣,total的部分連接估計的累計還可以合并為每個合并區(qū)域生成的prev值的累計。因此,所述公式可選地可以表達如下A<Bforeach(currM,M)total+=1/2*|currA|*currB|*width(currM)*(width(currM)-1)+|currB|*width(currM)*accum(currA)特別地,在每個迭代期間通??梢岳妹總€合并區(qū)域的prev值來增加total值。這樣,在框80,可以不必通過prev值的增加來調(diào)整total值。結果,可以在與本發(fā)明一致的某些實施例中省略框80。本領域普通技術人員可以理解,用兩部分表達的公式與單一公式之間的主要差別是把prev值加到total上,所述用兩部分表達的公式即,total表示為每個合并區(qū)域生成的部分連接估計的累計以及把為每個合并區(qū)域生成的所有prev值加到部分連接估計的最后total總數(shù)上,所述單一公式即,為每個合并區(qū)域把所述部分連接估計和prev值加到每個合并區(qū)域的total值上。此外,本領域普通技術人員可以了解,可以對在此描述的公式進行其它修改,這樣,本發(fā)明的范圍不應該局限于此處的特定實施例。返回到框78,如果所查詢的連接大小估計是小于或等于TableB數(shù)據(jù)值的TableA數(shù)據(jù)值的數(shù)量的估計,則基于如下公式可以在框78中為框77的合并區(qū)域生成部分連接估計A<=Bforeach(currM,M)total+=1/2*|currA|*|currB|*width(currM)*(width(currM)-1)此外,為每個合并區(qū)域生成的所有prev值都可以通過如下公式計算foreach(currM,M)prev|currB|*width(currM)*accum(currA)并且將其加到框80中的total值上。換句話說,為每個合并區(qū)域生成的prev值的累計可以象total變量一樣地被保持,并且在框80中prev值的累計可以加到total值上以生成所查找的連接大小估計。例如,prev值的累計可以通過如下方式生成foreach(currM,M)prev+=|currB|*width(currM)*accum(currA)對于小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的連接大小估計進行估計的討論可以是部分地或全部地可適用的。所述公式的主要差別在于所述合并區(qū)域寬度的增加,用加1來代替減1。相似地,與框77、78和/或80相關的討論是相關的并且可以是可適用的。此外,如果被考慮為三角形,則小于等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的連接大小估計包括三角形斜邊。可選地,通常在每個合并區(qū)域的每個迭代期間可以利用prev值來更新total,其通過如下方式A<=Bforeach(currM,M)total+=1/2*|currA|*|currB|*width(currM)*(width(currM)+1)+|currB|*width(currM)*accum(currA)此外,小于等于關聯(lián)于合并區(qū)域的直方圖B的存儲段的數(shù)據(jù)值的關聯(lián)于合并區(qū)域的直方圖A的存儲段的數(shù)據(jù)值的數(shù)量的部分連接估計可以通過如下方式把關聯(lián)于所述合并區(qū)域的第一和第二直方圖的區(qū)域或存儲段的叉積進行相乘來確定A<=B100%[CrossProduct(A,B)]-(A>B)特別地,CrossProduct(A,B)=f(A<B)+f(A=B)+f(A>B)可以通過對用于合并區(qū)域的三個部分連接估計的相加來確定所述叉積,所述部分連接估計主要是小于、等于以及大于關聯(lián)于合并區(qū)域的直方圖B的存儲段的數(shù)據(jù)值的關聯(lián)于合并區(qū)域的直方圖A的存儲段的數(shù)據(jù)值的數(shù)量的部分連接估計。本領域普通技術人員可以理解,可以利用多于一個的total變量,如,一個total變量用于(A<B)、一個total變量用于(A=B)、和/或一個total變量用于(A>B)。此外,本領域普通技術人員可以理解,可以根據(jù)框80中的公式,通過聯(lián)合單獨的total(即已調(diào)整的total或未調(diào)整的total)將該公式用于生成所查找的連接大小估計。相似地,小于和/或等于關聯(lián)于合并區(qū)域的直方圖B的存儲段的數(shù)據(jù)值的關聯(lián)于合并區(qū)域的直方圖A的存儲段的數(shù)據(jù)值的數(shù)量的部分連接估計可以通過如下確定A<=B(A<B)+(A=B)這樣,對于每個合并區(qū)域,小于關聯(lián)于合并區(qū)域的直方圖B的存儲段的數(shù)據(jù)值的關聯(lián)于合并區(qū)域的直方圖A的存儲段的數(shù)據(jù)值的部分連接估計,以及等于關聯(lián)于合并區(qū)域的直方圖B的存儲段的數(shù)據(jù)值的關聯(lián)于合并區(qū)域的直方圖A的存儲段的數(shù)據(jù)值的部分連接估計可以被相加。本領域普通技術人員可以理解,可以利用多于一個的total變量,如,一個total變量用于(A<B)和/或一個total變量用于(A=B)。此外,本領域普通技術人員可以理解,通過聯(lián)合部分連接估計的單獨total,該公式可以用于生成所查找的連接大小估計,所述單獨total如,在框80中根據(jù)公式A<=B(A<B)+(A=B)和/或A<=B100%[CrossProduct(A,B)]-(A>B)的用于A<B的已調(diào)整total或用于A=B的未調(diào)整total。返回到框78,如果所查找的連接大小估計是大于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計,則可以通過替換小于公式的變量而在框78中為框77的合并區(qū)域生成部分連接估計,所述小于公式包括與框80相關的所討論公式的第二部分。這樣,與框77、78和/或80相關的前面的討論可以是部分或整體地相關的并且是可適用的。特別地,所述部分連接估計可以通過如下確定A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)-1)并且利用如下方式把為每個合并區(qū)域生成的prev值加到框80中的total上foreach(currM,M)prev|currA|*width(currM)*accum(currB)whereinaccum(eurrB)+=|priorB|*width(priorM)或者foreach(currM,M)prev+=|currA|*width(currM)*accum(currB)whereinaccum(currB)+=|priorB|*width(priorM)可選地,所述公式通常可以表達為A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)-1)+|currA|*width(currM)*accum(currB)返回到框78,如果所述查找的連接大小估計是大于或等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的數(shù)量的估計,則通過用三種技術來替換所述變量以估計小于等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的連接大小,而可以在框78中為框77的合并區(qū)域生成部分連接估計。相似地,與上述小于等于公式相關的討論也是相關的,此外,與框77、78和/或80相關的前面的討論可以是部分或整體地相關的并且是可適用的。特別地,可以通過如下方式確定部分連接估計A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)+1)并且利用如下方式將所述為每個合并區(qū)域生成的prev值加到框80中的total上foreach(currM,M)prev|currA|*width(currM)*accum(currB)whereinaccum(currB)+=|priorB|*width(priorM)或者foreach(currM,M)prev+=|currA|*width(currM)*accum(currB)whereinaccum(currB)+=|priorB|*width(priorM)可選地,所述公式通??梢员磉_為A>Bforeach(currM,M)total+=1/2*|currB|*|currA|*width(currM)*(width(currM)+1)+|currA|*width(currM)*accum(currB)此外,公式A>=B(B<A)+(B=A)和/或100%[CrossProduct(B,A)]-(B>A)可以用于為每個合并區(qū)域生成兩個部分連接估計。本領域普通技術人員可以理解對這些公式進行加和減以及替換變量的能力,并且不引入錯誤。例如,如果已經(jīng)存在對于A<B的連接大小估計和對于A=B的連接大小結果,但是通常聯(lián)合前面計算出的連接大小估計來為A>B生成連接大小估計是不合適的,因為它將導致負值或接近0的值。然而,在此處描述的實施例中,其中的計算是健壯的,所述對A>B的連接大小估計可以根據(jù)與本發(fā)明一致的|crossproduct|-|A<B|-|A=B|來可靠地計算得到。此外,在沒有accum變量時,f(A<B)=f(B<A)的特性也可以用于合并區(qū)域。此外,本領域普通技術人員可以理解,可以對附圖3中的例程60和/或所述公式進行變化。下面的例子例示了所示實施例的優(yōu)點。概述地,在第一例子中,在表III中顯示了TableA和TableB的多個連接大小估計和合并區(qū)域、部分連接估計、可以在例程60的迭代期間確定的accum和prev值。特別地,表I中的“TableA的數(shù)據(jù)”列包含了TableA的實際數(shù)據(jù)值,而表I的剩余列描述了TableA的直方圖?!跋孪蕖焙汀吧舷蕖绷忻枋隽薚ableA的直方圖的存儲段(即,表I中的每行通常表示一個存儲段)的界限,以及“計數(shù)”列例示了每個存儲段中的單元的數(shù)量。第一下限、所有上限和計數(shù)的值可以被存儲,但是不必與本發(fā)明一致。為了簡單起見,所述可以被存儲的值通過下面的標記^來指出。相似地,表II例示了TableB的數(shù)據(jù)值并描述了TableB的直方圖。表I表II接著,表III詳細描述了所包含的用于指出連接大小估計的中間數(shù)據(jù)?!昂喜^(qū)域”列指定從直方圖A和/或直方圖B的存儲段生成的不同合并區(qū)域,以及它們的上界、下界,如,表III中第一合并區(qū)域的范圍是(-1,0],其中-1是獨占的下界而0是包含的上界。特別地,表III中“合并區(qū)域”的范圍基于TableA的直方圖的存儲段的界限(即,0,3,8,12),并且基于TableB的直方圖的存儲段的界限(即,-1,7,32)。|A|和|B|列各自例示了關聯(lián)于合并區(qū)域的直方圖A和B的存儲段的密度(如,關聯(lián)于合并區(qū)域的TableA的存儲段的計數(shù)除以存儲段的寬度)??梢詾槊總€合并區(qū)域計算Accum或Accumulator以及Prev或Previous值,但是所述值可能不被用于等式的連接大小估計中,相反,accum和prev值可以用于所示的兩個不等式公式中(即,小于和小于等于)。如前面描述的,Accum是關于有多少TableA的值小于合并區(qū)域下限的估計,而Prev是在當前合并區(qū)域中TableB的值與來自Accum的TableA的值之間的被估計的叉積。<、=以及<=列是三角形計算。此外,<、=以及<=列的每一行例示了部分連接估計。此外,可以通過關聯(lián)于所述連接大小估計的total變量來把每個部分連接估計聯(lián)合起來,如,第一total變量用于對<的連接大小估計,第二total變量用于對=的連接大小估計,以及第三total變量用于對<=的連接大小估計。此外,prev值可以與上面所描述的任意不等式的total變量聯(lián)合起來。表IIITableA和TableB之間的連接的連接大小估計參考表III,在表III的“合并區(qū)域”列中描述的合并區(qū)域可以利用前面提及的用于生成合并區(qū)域的技術來生成。例如,首先,A.upper[-1]可以指向直方圖A的第一存儲段的下限,主要是值0,而B.upper[-1]可以指向直方圖B的第一存儲段的下限,主要是值-1。在比較0和-1時所述最下限值是-1。這樣,數(shù)組B.upper[j]中的變量j可以被加1到值0,并且所述最下限值-1可以成為第一合并區(qū)域的下界。由于合并區(qū)域沒有完成,因此部分連接估計的計算可以延遲到第二循環(huán)迭代。在第二迭代期間,可以比較由A.upper[-1]和B.upper表示的界限值。A.upper[-1]值較??;這樣在第二迭代期間最下限值是0。數(shù)組A.upper[i]的變量i可以被加l,并且最下限值0可以成為第一合并區(qū)域的上界值。接著,所述公式可以用于生成部分連接估計(或如表III中所示的多個部分連接估計),下面將進行更詳細地描述,并且如果沒有對直方圖A和B的存儲段的所有界限進行處理,則可以進行另一迭代循環(huán),所述處理通常通過分別將變量i和j與直方圖A和B的長度進行比較而標識出來。這樣,在第三迭代期間,前一合并區(qū)域(即(-1,0])的上界值可以是第三迭代的第二合并區(qū)域的下界值,并且第三迭代的第二合并區(qū)域的上界值可以是下一個最下限值(即3),其通過比較A.upper和B.upper來確定。此外,可以遞增變量i并且利用所述公式為合并區(qū)域(0,3]計算部分連接估計等等。這樣,例程60中所概括的技術可以被實現(xiàn)并可產(chǎn)生如表III所例示的值。現(xiàn)在,將更詳細地描述某些中間值和部分連接估計;然而,由于表III中第一行和第二行中的多個0值不具有特定的說明性,本討論將從表III的第三行開始。這樣,從第三行開始,可以計算|A|或關聯(lián)于合并區(qū)域(3,7]的TableA的直方圖的存儲段的密度。特別地,TableA的直方圖中的存儲段3到8是關聯(lián)于合并區(qū)域的存儲段,因為所述合并區(qū)域與所述存儲段重疊(即,值3重疊)。特別地,存儲段的計數(shù)(即,4)可以除以存儲段上限和下限之間的差值(即,8-3=5),結果密度為.8(即,4/8-3=4/5=.8)。接著,為計算|B|,著眼于關聯(lián)于合并區(qū)域的TableB的直方圖中的存儲段的計數(shù)。合并區(qū)域(3,7]與具有界限一1和7的直方圖B的存儲段重疊。這樣,相關聯(lián)存儲段具有界限-1和7并且所述相關聯(lián)存儲段的計數(shù)(即,4)除以所述相關聯(lián)存儲段的上限和下限之間的差(即,7--1=8),結果是在|B|列的第三行所例示的值.5(即,4/7--1=4/8=.5)。在“寬度”列中的值4例示了合并區(qū)域的上界和下界之間的差。換句話說,通常值4可以滿足合并區(qū)域(3,7],主要地,值3、4、5和6可以滿足,但是值7不能滿足。在3和7之間可以存在無限個浮點值,但是為了簡單,使用了整數(shù)。接著,轉到Accum列,可以通過把在此之前的行中的|A|值(即,1)乘以在此之前的行中的合并區(qū)域的寬度(即,3),并將所述乘積加到在此之前的行中的Aceum值(即,0)上來確定Accum值,結果得到小于當前合并區(qū)域的最下限(即,3)的TableA的數(shù)據(jù)值的數(shù)量的估計。這樣,估計得到有3個TableA的數(shù)據(jù)值(即,3*1+0=3)小于值3。Prev指示當前合并區(qū)域的TableB的數(shù)據(jù)值與來自Accum的TableA的數(shù)據(jù)值數(shù)量的被估計的叉積,并且可以通過把當前Accum值(即,3)乘以合并區(qū)域(3,7]的當前寬度(即,4)再乘以|B|(即,.5)來計算,得到被估計的叉積6。接著,剛描述的計算值可以插入前面提到的公式以估計部分連接估計?;氐降谌?,|A|和|B|的值以及所述寬度可以相乘在一起以估計在值3到7的范圍中等于TableB中的數(shù)據(jù)值的TableA中的數(shù)據(jù)值的數(shù)量。這樣,.8*.5*4為該合并區(qū)域產(chǎn)生估計1.6。為了估計總體上有多少個TableA的數(shù)據(jù)值等于TableB的數(shù)據(jù)值,在每個循環(huán)迭代期間,為每個合并區(qū)域生成的=列下的所有部分連接估計可以被加到所述total變量(未示出)上。這樣,得出的連接大小估計是在標為total的行中例示的3.708。此外,由于這不是不等式,所以框80中的total值表示所述連接大小估計并且通常不需要調(diào)整。接著,為了得到對<和<=列的部分連接估計,上面所描述的值可以插入<和<=公式。首先,假定所述公式被分為兩個部分??紤]第一部分,返回到第三行,考慮小于合并區(qū)域(3,7]的TableB的數(shù)據(jù)值的合并區(qū)域(3,7]中的TableA的數(shù)據(jù)值,0.5乘以|A|和|B|的值、合并區(qū)域的寬度、以及合并區(qū)域的寬度減1(即,1/2*.8*.5*4*3=2.4),結果得到部分連接估計2.4。相似地,返回到第三行,考慮小于等于合并區(qū)域(3,7]的TableB的數(shù)據(jù)值的合并區(qū)域(3,7]中的TableA的數(shù)據(jù)值,0.5乘以|A|和|B|的值、合并區(qū)域的寬度、以及合并區(qū)域的寬度加1(即,1/2*.8*.5*4*5=4),結果得到部分連接估計4。此外,前面計算得到的估計了合并區(qū)域(3,7]中的數(shù)據(jù)值的部分連接估計的<的估計(即,2.4)和=的估計(1.6)可以相加以得到估計4。同樣,把生成的值插入100%[CrossProduct(A,B)]-(A>B)將相似地得到估計4。如表III的最后一行“連接大小估計”所示,實現(xiàn)了每個<和<=公式的第二部分。特別地,關注表III的最后的連接大小估計,total值表示來自所述公式第一部分的部分連接估計的和,而來自prev值列的所有的prev值(即,prev值的總數(shù)43.472)都分別被加到A<B和A<=B的部分連接估計的total(4.62和8.328)上。這樣,小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的連接大小估計是48.092,而小于等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的連接大小估計是51.8??蛇x地,第三行所示的為第三合并區(qū)域生成的prev值(即6)可以加到每個不等式的部分連接估計的累計上,即,0+1.5+2.4+6=8.4以及0+3+4+6=10。相似地,為第四合并區(qū)域生成的下一prev值(即0.992)和下一相應的部分連接估計可以加到每個累計,即,8.4+0+0.992=9.392以及10+0.128+0.992=11.12,等等。通常,這應該產(chǎn)生相同的連接大小估計,就好像已經(jīng)應用了兩部分的公式一樣。本領域普通技術人員可以理解,雖然來自小于、等于和/或小于等于的TableA的數(shù)據(jù)值的實際數(shù)量在數(shù)據(jù)庫查行執(zhí)行之前可能都是未知的,這就是通常為什么在執(zhí)行數(shù)據(jù)庫查詢之前就生成連接大小估計的原因。然而,分別關注匹配標準的值的實際數(shù)量(即,41、3和44),本領域普通技術人員可以理解,在表III中所指示的連接大小估計48.092、3.708和51.8可以是有用的連接大小估計。此外,值得注意的是,A<B和A=B的連接估計(以及實際值)合計達A<=B,即,48.092+3.708=51.8。接著,參考第二個例子,和上面第一個例子一樣,在表V中顯示TableA和TableC的多個部分連接估計。首先,表I(上面)和表IV每個都分別顯示了TableA和TableC中的實際數(shù)據(jù),并且分別描述了每個表的直方圖。和第一個例子中一樣,具有符號^的值(特別是第一下限、上限、以及每個直方圖存儲段的計數(shù))可以被存儲。表IV接著,在表I和表IV中指示的下限和上限可以用于生成如下面表V中“合并區(qū)域”列所指示的多個合并區(qū)域。相同的公式和相應的計算可以被實現(xiàn)用于得到如表V中所指示的每個合并區(qū)域的部分連接估計以及最后的連接大小估計。特別地,小于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的被估計的總體連接大小是32,等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的被估計的總體連接大小是6.4,以及小于等于TableB的數(shù)據(jù)值的TableA的數(shù)據(jù)值的被估計的總體連接大小是38.4。表VTableA和TableC之間連接的連接大小估計此外,通過調(diào)換變量(即,A和C)順序,并為A>C和A>=C執(zhí)行計算,可以分別為A>C和A>=C生成最后的連接大小估計41.6和48。此外,本領域普通技術人員可以理解,A<C和A>=C的估計總數(shù)是80,并且因此A<=C和A>C的估計總數(shù)也一樣。此外,由于80是所述連接的叉積的大小(TableA中的數(shù)據(jù)值10乘以TableB中的數(shù)據(jù)值8得到80,即80=>80),這通常表明了所述公式是一致的??梢詫λ镜膶嵤├M行多種修改而不脫離離本發(fā)明的精神和范圍。因此,本發(fā)明在于權利要求。權利要求1.一種用于估計第一和第二表的連接大小的方法,所述方法包括(a)從分別關聯(lián)于所述第一和第二表的第一和第二直方圖中確定多個合并區(qū)域,其中每個直方圖包括多個區(qū)域,并且其中每個合并區(qū)域與來自所述第一或第二直方圖中的至少一個的區(qū)域重疊;(b)對于每個合并區(qū)域,為這樣的合并區(qū)域計算部分連接估計,其中計算所述部分連接估計包括將關聯(lián)于所述合并區(qū)域的第一和第二直方圖的任意區(qū)域的密度按照關聯(lián)于所述合并區(qū)域的寬度來按比例縮放;以及(c)聯(lián)合所述部分連接估計。2.根據(jù)權利要求1所述的方法,其中為合并區(qū)域計算部分連接估計包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A=B,所述計算利用如下公式的至少一部分|currA|*|currB|*width(currM)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,而width(currM)是所述合并區(qū)域的寬度。3.根據(jù)權利要求1所述的方法,其中為合并區(qū)域計算部分連接估計包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A<B,所述計算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)-1)+|currB|*width(currM)*accum(currA)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currA)是小于所述合并區(qū)域下界的第一表中的數(shù)據(jù)值的數(shù)量的估計。4.根據(jù)權利要求1所述的方法,其中為合并區(qū)域計算部分連接估計包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A≤=B,所述計算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)+1)+|currB|*width(currM)*accum(currA)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currA)是小于所述合并區(qū)域下界的第一表中的數(shù)據(jù)值的數(shù)量的估計。5.根據(jù)權利要求1所述的方法,其中為合并區(qū)域計算部分連接估計包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A≤=B,所述計算利用如下公式的至少一部分(A<B)+(A=B)其中(A<B)是第一部分連接估計而(A=B)是第二部分連接估計。6.根據(jù)權利要求1所述的方法,其中為合并區(qū)域計算部分連接估計包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A<=B,所述計算利用如下公式的至少一部分100%[CrossProduct(A,B)]-(A>B)其中CrossProduct(A,B)表示下面三個部分連接估計的相加(A<B)、(A=B)和(A>B)。7.根據(jù)權利要求1所述的方法,其中為合并區(qū)域計算部分連接估計包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A>B,所述計算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)-1)+|currA|*width(currM)*accum(currB)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currB)是小于所述合并區(qū)域下界的第二表中的數(shù)據(jù)值的數(shù)量的估計。8.根據(jù)權利要求1所述的方法,其中為合并區(qū)域計算部分連接估計包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A>=B,所述計算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)+1)+|currA|*width(currM)*accum(currB)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currB)是小于所述合并區(qū)域下界的第二表中的數(shù)據(jù)值的數(shù)量的估計。9.根據(jù)權利要求1所述的方法,其中為合并區(qū)域計算部分連接估計包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A>=B,所述計算利用如下公式的至少一部分(B<A)+(B=A)其中(B<A)是第一部分連接估計而(B=A)是第二部分連接估計。10.根據(jù)權利要求1所述的方法,其中為合并區(qū)域計算部分連接估計包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A>=B,所述計算利用如下公式的至少一部分100%[CrossProduct(B,A)]-(B>A)其中CrossProduct(B,A)表示下面三個部分連接估計的相加(B<A)、(B=A)和(B>A)。11.根據(jù)權利要求1所述的方法,其中所述部分連接估計引入模糊邏輯規(guī)則。12.根據(jù)權利要求1所述的方法,其中所述合并區(qū)域與來自所述第一或第二直方圖中的至少一個的區(qū)域重疊包括利用所述第一或第二直方圖的上限或下限中的至少一個。13.一種裝置,包括至少一個處理器;存儲器;以及駐留在所述存儲器中并配置由所述至少一個處理器執(zhí)行來估計第一和第二表的連接大小的程序代碼,所述估計通過如下方式從分別關聯(lián)于所述第一和第二表的第一和第二直方圖中確定多個合并區(qū)域,其中每個直方圖包括多個區(qū)域,并且其中每個合并區(qū)域與來自所述第一或第二直方圖中的至少一個的區(qū)域重疊,對于每個合并區(qū)域,為這樣的合并區(qū)域計算部分連接估計,其中計算所述部分連接估計包括將關聯(lián)于所述合并區(qū)域的第一和第二直方圖的任意區(qū)域的密度按照關聯(lián)于所述合并區(qū)域的寬度來按比例縮放,以及聯(lián)合所述部分連接估計。14.根據(jù)權利要求13所述的裝置,配置為合并區(qū)域計算部分連接估計的所述程序代碼包括計算用于所述估計第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A=B,所述計算利用如下公式的至少一部分|currA|*|currB|*width(currM)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,而width(currM)是所述合并區(qū)域的寬度。15.根據(jù)權利要求13所述的裝置,配置為合并區(qū)域計算部分連接估計的所述程序代碼包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A<B,所述計算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)-1)+|currB|*width(currM)*accum(currA)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currA)是小于所述合并區(qū)域下界的第一表中的數(shù)據(jù)值的數(shù)量的估計。16.根據(jù)權利要求13所述的裝置,配置為合并區(qū)域計算部分連接估計的所述程序代碼包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A<=B,所述計算利用如下公式的至少一部分1/2*|currA|*|currB|*width(currM)*(width(currM)+1)+|currB|*width(currM)*accum(currA)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currA)是小于所述合并區(qū)域下界的第一表中數(shù)據(jù)值的數(shù)量的估計。17.根據(jù)權利要求13所述的裝置,配置為合并區(qū)域計算部分連接估計的所述程序代碼包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A<=B,所述計算利用如下公式的至少一部分(A<B)+(A=B)其中(A<B)是第一部分連接估計而(A=B)是第二部分連接估計。18.根據(jù)權利要求13所述的裝置,配置為合并區(qū)域計算部分連接估計的所述程序代碼包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A<=B,所述計算利用如下公式的至少一部分100%[CrossProduct(A,B)]-(A>B)其中CrossProduct(A,B)表示下面三個部分連接估計的相加(A<B)、(A=B)和(A>B)。19.根據(jù)權利要求13所述的裝置,配置為合并區(qū)域計算部分連接估計的所述程序代碼包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A>B,所述計算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)-1)+|currA|*width(currM)*accum(currB)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currB)是小于所述合并區(qū)域下界的第二表中的數(shù)據(jù)值的數(shù)量的估計。20.根據(jù)權利要求13所述的裝置,配置為合并區(qū)域計算部分連接估計的所述程序代碼包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A>=B,所述計算利用如下公式的至少一部分1/2*|currB|*|currA|*width(currM)*(width(currM)+1)+|currA|*width(currM)*accum(currB)其中|currA|是來自于關聯(lián)于所述合并區(qū)域的第一直方圖的區(qū)域的密度,|currB|是來自于關聯(lián)于所述合并區(qū)域的第二直方圖的區(qū)域的密度,width(currM)是所述合并區(qū)域的寬度,而accum(currB)是小于所述合并區(qū)域下界的第二表中的數(shù)據(jù)值的數(shù)量的估計。21.根據(jù)權利要求13所述的裝置,配置為合并區(qū)域計算部分連接估計的所述程序代碼包括計算用于估計所述第一和第二表的連接大小的部分連接估計,所述第一和第二表滿足條件A>=B,所述計算利用如下公式的至少一部分(B<A)+(B=A)其中(B<A)是第一部分連接估計而(B=A)是第二部分連接估計。22.根據(jù)權利要求13所述的裝置,配置為合并區(qū)域計算部分連接估計的所述程序代碼包括計算用于估計所述第一和第二表連接大小的部分連接估計,所述第一和第二表滿足條件A>=B,所述計算利用如下公式的至少一部分100%[CrossProduct(B,A)]-(B>A)其中CrossProduct(B,A)表示下面三個部分連接估計的相加(B<A)、(B=A)和(B>A)。23.根據(jù)權利要求13所述的裝置,其中所述程序代碼配置在所述部分連接估計中引入模糊邏輯規(guī)則。24.根據(jù)權利要求13所述的裝置,其中所述合并區(qū)域與來自所述第一或第二直方圖中的至少一個的區(qū)域重疊,所述程序代碼進一步配置為利用所述第一或第二直方圖的上限或下限中的至少一個。全文摘要一種用于通過生成部分連接估計并聯(lián)合所述部分連接估計來估計連接大小的程序產(chǎn)品、裝置和方法。特別地,提供了健壯的公式,其可以得到更加一致的估計和更少的不準確性。傳統(tǒng)的連接大小估計技術通常存在不一致性和不準確性,然而,與本發(fā)明一致,可以生成一致的連接大小估計,其在優(yōu)化期間導致改進的訪問計劃選擇。文檔編號G06F17/30GK1979486SQ20061014952公開日2007年6月13日申請日期2006年11月14日優(yōu)先權日2005年12月8日發(fā)明者J·普日瓦拉申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1